Skip to main content

atsamd51p19a/
lib.rs

1#![doc = "Peripheral access API for ATSAMD51P19A microcontrollers (generated using svd2rust v0.17.0 (2bbb605 2020-05-16))\n\nYou can find an overview of the generated API [here].\n\nAPI features to be included in the [next]
2svd2rust release can be generated by cloning the svd2rust [repository], checking out the above commit, and running `cargo doc --open`.\n\n[here]: https://docs.rs/svd2rust/0.17.0/svd2rust/#peripheral-api\n[next]: https://github.com/rust-embedded/svd2rust/blob/master/CHANGELOG.md#unreleased\n[repository]: https://github.com/rust-embedded/svd2rust"]
3#![deny(const_err)]
4#![deny(dead_code)]
5#![deny(improper_ctypes)]
6#![deny(missing_docs)]
7#![deny(no_mangle_generic_items)]
8#![deny(non_shorthand_field_patterns)]
9#![deny(overflowing_literals)]
10#![deny(path_statements)]
11#![deny(patterns_in_fns_without_body)]
12#![deny(private_in_public)]
13#![deny(unconditional_recursion)]
14#![deny(unused_allocation)]
15#![deny(unused_comparisons)]
16#![deny(unused_parens)]
17#![deny(while_true)]
18#![allow(non_camel_case_types)]
19#![allow(non_snake_case)]
20#![no_std]
21extern crate bare_metal;
22extern crate cortex_m;
23#[cfg(feature = "rt")]
24extern crate cortex_m_rt;
25extern crate vcell;
26use core::marker::PhantomData;
27use core::ops::Deref;
28#[doc = r"Number available in the NVIC for configuring priority"]
29pub const NVIC_PRIO_BITS: u8 = 3;
30#[cfg(feature = "rt")]
31extern "C" {
32    fn PM();
33    fn MCLK();
34    fn OSCCTRL_XOSC0();
35    fn OSCCTRL_XOSC1();
36    fn OSCCTRL_DFLL();
37    fn OSCCTRL_DPLL0();
38    fn OSCCTRL_DPLL1();
39    fn OSC32KCTRL();
40    fn SUPC_OTHER();
41    fn SUPC_BODDET();
42    fn WDT();
43    fn RTC();
44    fn EIC_EXTINT_0();
45    fn EIC_EXTINT_1();
46    fn EIC_EXTINT_2();
47    fn EIC_EXTINT_3();
48    fn EIC_EXTINT_4();
49    fn EIC_EXTINT_5();
50    fn EIC_EXTINT_6();
51    fn EIC_EXTINT_7();
52    fn EIC_EXTINT_8();
53    fn EIC_EXTINT_9();
54    fn EIC_EXTINT_10();
55    fn EIC_EXTINT_11();
56    fn EIC_EXTINT_12();
57    fn EIC_EXTINT_13();
58    fn EIC_EXTINT_14();
59    fn EIC_EXTINT_15();
60    fn FREQM();
61    fn NVMCTRL_0();
62    fn NVMCTRL_1();
63    fn DMAC_0();
64    fn DMAC_1();
65    fn DMAC_2();
66    fn DMAC_3();
67    fn DMAC_OTHER();
68    fn EVSYS_0();
69    fn EVSYS_1();
70    fn EVSYS_2();
71    fn EVSYS_3();
72    fn EVSYS_OTHER();
73    fn PAC();
74    fn RAMECC();
75    fn SERCOM0_0();
76    fn SERCOM0_1();
77    fn SERCOM0_2();
78    fn SERCOM0_OTHER();
79    fn SERCOM1_0();
80    fn SERCOM1_1();
81    fn SERCOM1_2();
82    fn SERCOM1_OTHER();
83    fn SERCOM2_0();
84    fn SERCOM2_1();
85    fn SERCOM2_2();
86    fn SERCOM2_OTHER();
87    fn SERCOM3_0();
88    fn SERCOM3_1();
89    fn SERCOM3_2();
90    fn SERCOM3_OTHER();
91    fn SERCOM4_0();
92    fn SERCOM4_1();
93    fn SERCOM4_2();
94    fn SERCOM4_OTHER();
95    fn SERCOM5_0();
96    fn SERCOM5_1();
97    fn SERCOM5_2();
98    fn SERCOM5_OTHER();
99    fn SERCOM6_0();
100    fn SERCOM6_1();
101    fn SERCOM6_2();
102    fn SERCOM6_OTHER();
103    fn SERCOM7_0();
104    fn SERCOM7_1();
105    fn SERCOM7_2();
106    fn SERCOM7_OTHER();
107    fn USB_OTHER();
108    fn USB_SOF_HSOF();
109    fn USB_TRCPT0();
110    fn USB_TRCPT1();
111    fn TCC0_OTHER();
112    fn TCC0_MC0();
113    fn TCC0_MC1();
114    fn TCC0_MC2();
115    fn TCC0_MC3();
116    fn TCC0_MC4();
117    fn TCC0_MC5();
118    fn TCC1_OTHER();
119    fn TCC1_MC0();
120    fn TCC1_MC1();
121    fn TCC1_MC2();
122    fn TCC1_MC3();
123    fn TCC2_OTHER();
124    fn TCC2_MC0();
125    fn TCC2_MC1();
126    fn TCC2_MC2();
127    fn TCC3_OTHER();
128    fn TCC3_MC0();
129    fn TCC3_MC1();
130    fn TCC4_OTHER();
131    fn TCC4_MC0();
132    fn TCC4_MC1();
133    fn TC0();
134    fn TC1();
135    fn TC2();
136    fn TC3();
137    fn TC4();
138    fn TC5();
139    fn TC6();
140    fn TC7();
141    fn PDEC_OTHER();
142    fn PDEC_MC0();
143    fn PDEC_MC1();
144    fn ADC0_OTHER();
145    fn ADC0_RESRDY();
146    fn ADC1_OTHER();
147    fn ADC1_RESRDY();
148    fn AC();
149    fn DAC_OTHER();
150    fn DAC_EMPTY_0();
151    fn DAC_EMPTY_1();
152    fn DAC_RESRDY_0();
153    fn DAC_RESRDY_1();
154    fn I2S();
155    fn PCC();
156    fn AES();
157    fn TRNG();
158    fn ICM();
159    fn QSPI();
160    fn SDHC0();
161    fn SDHC1();
162}
163#[doc(hidden)]
164pub union Vector {
165    _handler: unsafe extern "C" fn(),
166    _reserved: u32,
167}
168#[cfg(feature = "rt")]
169#[doc(hidden)]
170#[link_section = ".vector_table.interrupts"]
171#[no_mangle]
172pub static __INTERRUPTS: [Vector; 137] = [
173    Vector { _handler: PM },
174    Vector { _handler: MCLK },
175    Vector {
176        _handler: OSCCTRL_XOSC0,
177    },
178    Vector {
179        _handler: OSCCTRL_XOSC1,
180    },
181    Vector {
182        _handler: OSCCTRL_DFLL,
183    },
184    Vector {
185        _handler: OSCCTRL_DPLL0,
186    },
187    Vector {
188        _handler: OSCCTRL_DPLL1,
189    },
190    Vector {
191        _handler: OSC32KCTRL,
192    },
193    Vector {
194        _handler: SUPC_OTHER,
195    },
196    Vector {
197        _handler: SUPC_BODDET,
198    },
199    Vector { _handler: WDT },
200    Vector { _handler: RTC },
201    Vector {
202        _handler: EIC_EXTINT_0,
203    },
204    Vector {
205        _handler: EIC_EXTINT_1,
206    },
207    Vector {
208        _handler: EIC_EXTINT_2,
209    },
210    Vector {
211        _handler: EIC_EXTINT_3,
212    },
213    Vector {
214        _handler: EIC_EXTINT_4,
215    },
216    Vector {
217        _handler: EIC_EXTINT_5,
218    },
219    Vector {
220        _handler: EIC_EXTINT_6,
221    },
222    Vector {
223        _handler: EIC_EXTINT_7,
224    },
225    Vector {
226        _handler: EIC_EXTINT_8,
227    },
228    Vector {
229        _handler: EIC_EXTINT_9,
230    },
231    Vector {
232        _handler: EIC_EXTINT_10,
233    },
234    Vector {
235        _handler: EIC_EXTINT_11,
236    },
237    Vector {
238        _handler: EIC_EXTINT_12,
239    },
240    Vector {
241        _handler: EIC_EXTINT_13,
242    },
243    Vector {
244        _handler: EIC_EXTINT_14,
245    },
246    Vector {
247        _handler: EIC_EXTINT_15,
248    },
249    Vector { _handler: FREQM },
250    Vector {
251        _handler: NVMCTRL_0,
252    },
253    Vector {
254        _handler: NVMCTRL_1,
255    },
256    Vector { _handler: DMAC_0 },
257    Vector { _handler: DMAC_1 },
258    Vector { _handler: DMAC_2 },
259    Vector { _handler: DMAC_3 },
260    Vector {
261        _handler: DMAC_OTHER,
262    },
263    Vector { _handler: EVSYS_0 },
264    Vector { _handler: EVSYS_1 },
265    Vector { _handler: EVSYS_2 },
266    Vector { _handler: EVSYS_3 },
267    Vector {
268        _handler: EVSYS_OTHER,
269    },
270    Vector { _handler: PAC },
271    Vector { _reserved: 0 },
272    Vector { _reserved: 0 },
273    Vector { _reserved: 0 },
274    Vector { _handler: RAMECC },
275    Vector {
276        _handler: SERCOM0_0,
277    },
278    Vector {
279        _handler: SERCOM0_1,
280    },
281    Vector {
282        _handler: SERCOM0_2,
283    },
284    Vector {
285        _handler: SERCOM0_OTHER,
286    },
287    Vector {
288        _handler: SERCOM1_0,
289    },
290    Vector {
291        _handler: SERCOM1_1,
292    },
293    Vector {
294        _handler: SERCOM1_2,
295    },
296    Vector {
297        _handler: SERCOM1_OTHER,
298    },
299    Vector {
300        _handler: SERCOM2_0,
301    },
302    Vector {
303        _handler: SERCOM2_1,
304    },
305    Vector {
306        _handler: SERCOM2_2,
307    },
308    Vector {
309        _handler: SERCOM2_OTHER,
310    },
311    Vector {
312        _handler: SERCOM3_0,
313    },
314    Vector {
315        _handler: SERCOM3_1,
316    },
317    Vector {
318        _handler: SERCOM3_2,
319    },
320    Vector {
321        _handler: SERCOM3_OTHER,
322    },
323    Vector {
324        _handler: SERCOM4_0,
325    },
326    Vector {
327        _handler: SERCOM4_1,
328    },
329    Vector {
330        _handler: SERCOM4_2,
331    },
332    Vector {
333        _handler: SERCOM4_OTHER,
334    },
335    Vector {
336        _handler: SERCOM5_0,
337    },
338    Vector {
339        _handler: SERCOM5_1,
340    },
341    Vector {
342        _handler: SERCOM5_2,
343    },
344    Vector {
345        _handler: SERCOM5_OTHER,
346    },
347    Vector {
348        _handler: SERCOM6_0,
349    },
350    Vector {
351        _handler: SERCOM6_1,
352    },
353    Vector {
354        _handler: SERCOM6_2,
355    },
356    Vector {
357        _handler: SERCOM6_OTHER,
358    },
359    Vector {
360        _handler: SERCOM7_0,
361    },
362    Vector {
363        _handler: SERCOM7_1,
364    },
365    Vector {
366        _handler: SERCOM7_2,
367    },
368    Vector {
369        _handler: SERCOM7_OTHER,
370    },
371    Vector { _reserved: 0 },
372    Vector { _reserved: 0 },
373    Vector {
374        _handler: USB_OTHER,
375    },
376    Vector {
377        _handler: USB_SOF_HSOF,
378    },
379    Vector {
380        _handler: USB_TRCPT0,
381    },
382    Vector {
383        _handler: USB_TRCPT1,
384    },
385    Vector { _reserved: 0 },
386    Vector {
387        _handler: TCC0_OTHER,
388    },
389    Vector { _handler: TCC0_MC0 },
390    Vector { _handler: TCC0_MC1 },
391    Vector { _handler: TCC0_MC2 },
392    Vector { _handler: TCC0_MC3 },
393    Vector { _handler: TCC0_MC4 },
394    Vector { _handler: TCC0_MC5 },
395    Vector {
396        _handler: TCC1_OTHER,
397    },
398    Vector { _handler: TCC1_MC0 },
399    Vector { _handler: TCC1_MC1 },
400    Vector { _handler: TCC1_MC2 },
401    Vector { _handler: TCC1_MC3 },
402    Vector {
403        _handler: TCC2_OTHER,
404    },
405    Vector { _handler: TCC2_MC0 },
406    Vector { _handler: TCC2_MC1 },
407    Vector { _handler: TCC2_MC2 },
408    Vector {
409        _handler: TCC3_OTHER,
410    },
411    Vector { _handler: TCC3_MC0 },
412    Vector { _handler: TCC3_MC1 },
413    Vector {
414        _handler: TCC4_OTHER,
415    },
416    Vector { _handler: TCC4_MC0 },
417    Vector { _handler: TCC4_MC1 },
418    Vector { _handler: TC0 },
419    Vector { _handler: TC1 },
420    Vector { _handler: TC2 },
421    Vector { _handler: TC3 },
422    Vector { _handler: TC4 },
423    Vector { _handler: TC5 },
424    Vector { _handler: TC6 },
425    Vector { _handler: TC7 },
426    Vector {
427        _handler: PDEC_OTHER,
428    },
429    Vector { _handler: PDEC_MC0 },
430    Vector { _handler: PDEC_MC1 },
431    Vector {
432        _handler: ADC0_OTHER,
433    },
434    Vector {
435        _handler: ADC0_RESRDY,
436    },
437    Vector {
438        _handler: ADC1_OTHER,
439    },
440    Vector {
441        _handler: ADC1_RESRDY,
442    },
443    Vector { _handler: AC },
444    Vector {
445        _handler: DAC_OTHER,
446    },
447    Vector {
448        _handler: DAC_EMPTY_0,
449    },
450    Vector {
451        _handler: DAC_EMPTY_1,
452    },
453    Vector {
454        _handler: DAC_RESRDY_0,
455    },
456    Vector {
457        _handler: DAC_RESRDY_1,
458    },
459    Vector { _handler: I2S },
460    Vector { _handler: PCC },
461    Vector { _handler: AES },
462    Vector { _handler: TRNG },
463    Vector { _handler: ICM },
464    Vector { _reserved: 0 },
465    Vector { _handler: QSPI },
466    Vector { _handler: SDHC0 },
467    Vector { _handler: SDHC1 },
468];
469#[doc = r"Enumeration of all the interrupts"]
470#[derive(Copy, Clone, Debug)]
471#[repr(u8)]
472pub enum Interrupt {
473    #[doc = "0 - PM"]
474    PM = 0,
475    #[doc = "1 - MCLK"]
476    MCLK = 1,
477    #[doc = "2 - OSCCTRL_XOSC0"]
478    OSCCTRL_XOSC0 = 2,
479    #[doc = "3 - OSCCTRL_XOSC1"]
480    OSCCTRL_XOSC1 = 3,
481    #[doc = "4 - OSCCTRL_DFLL"]
482    OSCCTRL_DFLL = 4,
483    #[doc = "5 - OSCCTRL_DPLL0"]
484    OSCCTRL_DPLL0 = 5,
485    #[doc = "6 - OSCCTRL_DPLL1"]
486    OSCCTRL_DPLL1 = 6,
487    #[doc = "7 - OSC32KCTRL"]
488    OSC32KCTRL = 7,
489    #[doc = "8 - SUPC_OTHER"]
490    SUPC_OTHER = 8,
491    #[doc = "9 - SUPC_BODDET"]
492    SUPC_BODDET = 9,
493    #[doc = "10 - WDT"]
494    WDT = 10,
495    #[doc = "11 - RTC"]
496    RTC = 11,
497    #[doc = "12 - EIC_EXTINT_0"]
498    EIC_EXTINT_0 = 12,
499    #[doc = "13 - EIC_EXTINT_1"]
500    EIC_EXTINT_1 = 13,
501    #[doc = "14 - EIC_EXTINT_2"]
502    EIC_EXTINT_2 = 14,
503    #[doc = "15 - EIC_EXTINT_3"]
504    EIC_EXTINT_3 = 15,
505    #[doc = "16 - EIC_EXTINT_4"]
506    EIC_EXTINT_4 = 16,
507    #[doc = "17 - EIC_EXTINT_5"]
508    EIC_EXTINT_5 = 17,
509    #[doc = "18 - EIC_EXTINT_6"]
510    EIC_EXTINT_6 = 18,
511    #[doc = "19 - EIC_EXTINT_7"]
512    EIC_EXTINT_7 = 19,
513    #[doc = "20 - EIC_EXTINT_8"]
514    EIC_EXTINT_8 = 20,
515    #[doc = "21 - EIC_EXTINT_9"]
516    EIC_EXTINT_9 = 21,
517    #[doc = "22 - EIC_EXTINT_10"]
518    EIC_EXTINT_10 = 22,
519    #[doc = "23 - EIC_EXTINT_11"]
520    EIC_EXTINT_11 = 23,
521    #[doc = "24 - EIC_EXTINT_12"]
522    EIC_EXTINT_12 = 24,
523    #[doc = "25 - EIC_EXTINT_13"]
524    EIC_EXTINT_13 = 25,
525    #[doc = "26 - EIC_EXTINT_14"]
526    EIC_EXTINT_14 = 26,
527    #[doc = "27 - EIC_EXTINT_15"]
528    EIC_EXTINT_15 = 27,
529    #[doc = "28 - FREQM"]
530    FREQM = 28,
531    #[doc = "29 - NVMCTRL_0"]
532    NVMCTRL_0 = 29,
533    #[doc = "30 - NVMCTRL_1"]
534    NVMCTRL_1 = 30,
535    #[doc = "31 - DMAC_0"]
536    DMAC_0 = 31,
537    #[doc = "32 - DMAC_1"]
538    DMAC_1 = 32,
539    #[doc = "33 - DMAC_2"]
540    DMAC_2 = 33,
541    #[doc = "34 - DMAC_3"]
542    DMAC_3 = 34,
543    #[doc = "35 - DMAC_OTHER"]
544    DMAC_OTHER = 35,
545    #[doc = "36 - EVSYS_0"]
546    EVSYS_0 = 36,
547    #[doc = "37 - EVSYS_1"]
548    EVSYS_1 = 37,
549    #[doc = "38 - EVSYS_2"]
550    EVSYS_2 = 38,
551    #[doc = "39 - EVSYS_3"]
552    EVSYS_3 = 39,
553    #[doc = "40 - EVSYS_OTHER"]
554    EVSYS_OTHER = 40,
555    #[doc = "41 - PAC"]
556    PAC = 41,
557    #[doc = "45 - RAMECC"]
558    RAMECC = 45,
559    #[doc = "46 - SERCOM0_0"]
560    SERCOM0_0 = 46,
561    #[doc = "47 - SERCOM0_1"]
562    SERCOM0_1 = 47,
563    #[doc = "48 - SERCOM0_2"]
564    SERCOM0_2 = 48,
565    #[doc = "49 - SERCOM0_OTHER"]
566    SERCOM0_OTHER = 49,
567    #[doc = "50 - SERCOM1_0"]
568    SERCOM1_0 = 50,
569    #[doc = "51 - SERCOM1_1"]
570    SERCOM1_1 = 51,
571    #[doc = "52 - SERCOM1_2"]
572    SERCOM1_2 = 52,
573    #[doc = "53 - SERCOM1_OTHER"]
574    SERCOM1_OTHER = 53,
575    #[doc = "54 - SERCOM2_0"]
576    SERCOM2_0 = 54,
577    #[doc = "55 - SERCOM2_1"]
578    SERCOM2_1 = 55,
579    #[doc = "56 - SERCOM2_2"]
580    SERCOM2_2 = 56,
581    #[doc = "57 - SERCOM2_OTHER"]
582    SERCOM2_OTHER = 57,
583    #[doc = "58 - SERCOM3_0"]
584    SERCOM3_0 = 58,
585    #[doc = "59 - SERCOM3_1"]
586    SERCOM3_1 = 59,
587    #[doc = "60 - SERCOM3_2"]
588    SERCOM3_2 = 60,
589    #[doc = "61 - SERCOM3_OTHER"]
590    SERCOM3_OTHER = 61,
591    #[doc = "62 - SERCOM4_0"]
592    SERCOM4_0 = 62,
593    #[doc = "63 - SERCOM4_1"]
594    SERCOM4_1 = 63,
595    #[doc = "64 - SERCOM4_2"]
596    SERCOM4_2 = 64,
597    #[doc = "65 - SERCOM4_OTHER"]
598    SERCOM4_OTHER = 65,
599    #[doc = "66 - SERCOM5_0"]
600    SERCOM5_0 = 66,
601    #[doc = "67 - SERCOM5_1"]
602    SERCOM5_1 = 67,
603    #[doc = "68 - SERCOM5_2"]
604    SERCOM5_2 = 68,
605    #[doc = "69 - SERCOM5_OTHER"]
606    SERCOM5_OTHER = 69,
607    #[doc = "70 - SERCOM6_0"]
608    SERCOM6_0 = 70,
609    #[doc = "71 - SERCOM6_1"]
610    SERCOM6_1 = 71,
611    #[doc = "72 - SERCOM6_2"]
612    SERCOM6_2 = 72,
613    #[doc = "73 - SERCOM6_OTHER"]
614    SERCOM6_OTHER = 73,
615    #[doc = "74 - SERCOM7_0"]
616    SERCOM7_0 = 74,
617    #[doc = "75 - SERCOM7_1"]
618    SERCOM7_1 = 75,
619    #[doc = "76 - SERCOM7_2"]
620    SERCOM7_2 = 76,
621    #[doc = "77 - SERCOM7_OTHER"]
622    SERCOM7_OTHER = 77,
623    #[doc = "80 - USB_OTHER"]
624    USB_OTHER = 80,
625    #[doc = "81 - USB_SOF_HSOF"]
626    USB_SOF_HSOF = 81,
627    #[doc = "82 - USB_TRCPT0"]
628    USB_TRCPT0 = 82,
629    #[doc = "83 - USB_TRCPT1"]
630    USB_TRCPT1 = 83,
631    #[doc = "85 - TCC0_OTHER"]
632    TCC0_OTHER = 85,
633    #[doc = "86 - TCC0_MC0"]
634    TCC0_MC0 = 86,
635    #[doc = "87 - TCC0_MC1"]
636    TCC0_MC1 = 87,
637    #[doc = "88 - TCC0_MC2"]
638    TCC0_MC2 = 88,
639    #[doc = "89 - TCC0_MC3"]
640    TCC0_MC3 = 89,
641    #[doc = "90 - TCC0_MC4"]
642    TCC0_MC4 = 90,
643    #[doc = "91 - TCC0_MC5"]
644    TCC0_MC5 = 91,
645    #[doc = "92 - TCC1_OTHER"]
646    TCC1_OTHER = 92,
647    #[doc = "93 - TCC1_MC0"]
648    TCC1_MC0 = 93,
649    #[doc = "94 - TCC1_MC1"]
650    TCC1_MC1 = 94,
651    #[doc = "95 - TCC1_MC2"]
652    TCC1_MC2 = 95,
653    #[doc = "96 - TCC1_MC3"]
654    TCC1_MC3 = 96,
655    #[doc = "97 - TCC2_OTHER"]
656    TCC2_OTHER = 97,
657    #[doc = "98 - TCC2_MC0"]
658    TCC2_MC0 = 98,
659    #[doc = "99 - TCC2_MC1"]
660    TCC2_MC1 = 99,
661    #[doc = "100 - TCC2_MC2"]
662    TCC2_MC2 = 100,
663    #[doc = "101 - TCC3_OTHER"]
664    TCC3_OTHER = 101,
665    #[doc = "102 - TCC3_MC0"]
666    TCC3_MC0 = 102,
667    #[doc = "103 - TCC3_MC1"]
668    TCC3_MC1 = 103,
669    #[doc = "104 - TCC4_OTHER"]
670    TCC4_OTHER = 104,
671    #[doc = "105 - TCC4_MC0"]
672    TCC4_MC0 = 105,
673    #[doc = "106 - TCC4_MC1"]
674    TCC4_MC1 = 106,
675    #[doc = "107 - TC0"]
676    TC0 = 107,
677    #[doc = "108 - TC1"]
678    TC1 = 108,
679    #[doc = "109 - TC2"]
680    TC2 = 109,
681    #[doc = "110 - TC3"]
682    TC3 = 110,
683    #[doc = "111 - TC4"]
684    TC4 = 111,
685    #[doc = "112 - TC5"]
686    TC5 = 112,
687    #[doc = "113 - TC6"]
688    TC6 = 113,
689    #[doc = "114 - TC7"]
690    TC7 = 114,
691    #[doc = "115 - PDEC_OTHER"]
692    PDEC_OTHER = 115,
693    #[doc = "116 - PDEC_MC0"]
694    PDEC_MC0 = 116,
695    #[doc = "117 - PDEC_MC1"]
696    PDEC_MC1 = 117,
697    #[doc = "118 - ADC0_OTHER"]
698    ADC0_OTHER = 118,
699    #[doc = "119 - ADC0_RESRDY"]
700    ADC0_RESRDY = 119,
701    #[doc = "120 - ADC1_OTHER"]
702    ADC1_OTHER = 120,
703    #[doc = "121 - ADC1_RESRDY"]
704    ADC1_RESRDY = 121,
705    #[doc = "122 - AC"]
706    AC = 122,
707    #[doc = "123 - DAC_OTHER"]
708    DAC_OTHER = 123,
709    #[doc = "124 - DAC_EMPTY_0"]
710    DAC_EMPTY_0 = 124,
711    #[doc = "125 - DAC_EMPTY_1"]
712    DAC_EMPTY_1 = 125,
713    #[doc = "126 - DAC_RESRDY_0"]
714    DAC_RESRDY_0 = 126,
715    #[doc = "127 - DAC_RESRDY_1"]
716    DAC_RESRDY_1 = 127,
717    #[doc = "128 - I2S"]
718    I2S = 128,
719    #[doc = "129 - PCC"]
720    PCC = 129,
721    #[doc = "130 - AES"]
722    AES = 130,
723    #[doc = "131 - TRNG"]
724    TRNG = 131,
725    #[doc = "132 - ICM"]
726    ICM = 132,
727    #[doc = "134 - QSPI"]
728    QSPI = 134,
729    #[doc = "135 - SDHC0"]
730    SDHC0 = 135,
731    #[doc = "136 - SDHC1"]
732    SDHC1 = 136,
733}
734unsafe impl bare_metal::Nr for Interrupt {
735    #[inline(always)]
736    fn nr(&self) -> u8 {
737        *self as u8
738    }
739}
740#[cfg(feature = "rt")]
741pub use self::Interrupt as interrupt;
742pub use cortex_m::peripheral::Peripherals as CorePeripherals;
743pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, FPU, ITM, MPU, NVIC, SCB, SYST, TPIU};
744#[cfg(feature = "rt")]
745pub use cortex_m_rt::interrupt;
746#[allow(unused_imports)]
747use generic::*;
748#[doc = r"Common register and bit access and modify traits"]
749pub mod generic;
750#[doc = "Analog Comparators"]
751pub struct AC {
752    _marker: PhantomData<*const ()>,
753}
754unsafe impl Send for AC {}
755impl AC {
756    #[doc = r"Returns a pointer to the register block"]
757    #[inline(always)]
758    pub const fn ptr() -> *const ac::RegisterBlock {
759        0x4200_2000 as *const _
760    }
761}
762impl Deref for AC {
763    type Target = ac::RegisterBlock;
764    #[inline(always)]
765    fn deref(&self) -> &Self::Target {
766        unsafe { &*AC::ptr() }
767    }
768}
769#[doc = "Analog Comparators"]
770pub mod ac;
771#[doc = "Analog Digital Converter"]
772pub struct ADC0 {
773    _marker: PhantomData<*const ()>,
774}
775unsafe impl Send for ADC0 {}
776impl ADC0 {
777    #[doc = r"Returns a pointer to the register block"]
778    #[inline(always)]
779    pub const fn ptr() -> *const adc0::RegisterBlock {
780        0x4300_1c00 as *const _
781    }
782}
783impl Deref for ADC0 {
784    type Target = adc0::RegisterBlock;
785    #[inline(always)]
786    fn deref(&self) -> &Self::Target {
787        unsafe { &*ADC0::ptr() }
788    }
789}
790#[doc = "Analog Digital Converter"]
791pub mod adc0;
792#[doc = "Analog Digital Converter"]
793pub struct ADC1 {
794    _marker: PhantomData<*const ()>,
795}
796unsafe impl Send for ADC1 {}
797impl ADC1 {
798    #[doc = r"Returns a pointer to the register block"]
799    #[inline(always)]
800    pub const fn ptr() -> *const adc0::RegisterBlock {
801        0x4300_2000 as *const _
802    }
803}
804impl Deref for ADC1 {
805    type Target = adc0::RegisterBlock;
806    #[inline(always)]
807    fn deref(&self) -> &Self::Target {
808        unsafe { &*ADC1::ptr() }
809    }
810}
811#[doc = "Advanced Encryption Standard"]
812pub struct AES {
813    _marker: PhantomData<*const ()>,
814}
815unsafe impl Send for AES {}
816impl AES {
817    #[doc = r"Returns a pointer to the register block"]
818    #[inline(always)]
819    pub const fn ptr() -> *const aes::RegisterBlock {
820        0x4200_2400 as *const _
821    }
822}
823impl Deref for AES {
824    type Target = aes::RegisterBlock;
825    #[inline(always)]
826    fn deref(&self) -> &Self::Target {
827        unsafe { &*AES::ptr() }
828    }
829}
830#[doc = "Advanced Encryption Standard"]
831pub mod aes;
832#[doc = "Configurable Custom Logic"]
833pub struct CCL {
834    _marker: PhantomData<*const ()>,
835}
836unsafe impl Send for CCL {}
837impl CCL {
838    #[doc = r"Returns a pointer to the register block"]
839    #[inline(always)]
840    pub const fn ptr() -> *const ccl::RegisterBlock {
841        0x4200_3800 as *const _
842    }
843}
844impl Deref for CCL {
845    type Target = ccl::RegisterBlock;
846    #[inline(always)]
847    fn deref(&self) -> &Self::Target {
848        unsafe { &*CCL::ptr() }
849    }
850}
851#[doc = "Configurable Custom Logic"]
852pub mod ccl;
853#[doc = "Cortex M Cache Controller"]
854pub struct CMCC {
855    _marker: PhantomData<*const ()>,
856}
857unsafe impl Send for CMCC {}
858impl CMCC {
859    #[doc = r"Returns a pointer to the register block"]
860    #[inline(always)]
861    pub const fn ptr() -> *const cmcc::RegisterBlock {
862        0x4100_6000 as *const _
863    }
864}
865impl Deref for CMCC {
866    type Target = cmcc::RegisterBlock;
867    #[inline(always)]
868    fn deref(&self) -> &Self::Target {
869        unsafe { &*CMCC::ptr() }
870    }
871}
872#[doc = "Cortex M Cache Controller"]
873pub mod cmcc;
874#[doc = "Digital-to-Analog Converter"]
875pub struct DAC {
876    _marker: PhantomData<*const ()>,
877}
878unsafe impl Send for DAC {}
879impl DAC {
880    #[doc = r"Returns a pointer to the register block"]
881    #[inline(always)]
882    pub const fn ptr() -> *const dac::RegisterBlock {
883        0x4300_2400 as *const _
884    }
885}
886impl Deref for DAC {
887    type Target = dac::RegisterBlock;
888    #[inline(always)]
889    fn deref(&self) -> &Self::Target {
890        unsafe { &*DAC::ptr() }
891    }
892}
893#[doc = "Digital-to-Analog Converter"]
894pub mod dac;
895#[doc = "Direct Memory Access Controller"]
896pub struct DMAC {
897    _marker: PhantomData<*const ()>,
898}
899unsafe impl Send for DMAC {}
900impl DMAC {
901    #[doc = r"Returns a pointer to the register block"]
902    #[inline(always)]
903    pub const fn ptr() -> *const dmac::RegisterBlock {
904        0x4100_a000 as *const _
905    }
906}
907impl Deref for DMAC {
908    type Target = dmac::RegisterBlock;
909    #[inline(always)]
910    fn deref(&self) -> &Self::Target {
911        unsafe { &*DMAC::ptr() }
912    }
913}
914#[doc = "Direct Memory Access Controller"]
915pub mod dmac;
916#[doc = "Device Service Unit"]
917pub struct DSU {
918    _marker: PhantomData<*const ()>,
919}
920unsafe impl Send for DSU {}
921impl DSU {
922    #[doc = r"Returns a pointer to the register block"]
923    #[inline(always)]
924    pub const fn ptr() -> *const dsu::RegisterBlock {
925        0x4100_2000 as *const _
926    }
927}
928impl Deref for DSU {
929    type Target = dsu::RegisterBlock;
930    #[inline(always)]
931    fn deref(&self) -> &Self::Target {
932        unsafe { &*DSU::ptr() }
933    }
934}
935#[doc = "Device Service Unit"]
936pub mod dsu;
937#[doc = "External Interrupt Controller"]
938pub struct EIC {
939    _marker: PhantomData<*const ()>,
940}
941unsafe impl Send for EIC {}
942impl EIC {
943    #[doc = r"Returns a pointer to the register block"]
944    #[inline(always)]
945    pub const fn ptr() -> *const eic::RegisterBlock {
946        0x4000_2800 as *const _
947    }
948}
949impl Deref for EIC {
950    type Target = eic::RegisterBlock;
951    #[inline(always)]
952    fn deref(&self) -> &Self::Target {
953        unsafe { &*EIC::ptr() }
954    }
955}
956#[doc = "External Interrupt Controller"]
957pub mod eic;
958#[doc = "Event System Interface"]
959pub struct EVSYS {
960    _marker: PhantomData<*const ()>,
961}
962unsafe impl Send for EVSYS {}
963impl EVSYS {
964    #[doc = r"Returns a pointer to the register block"]
965    #[inline(always)]
966    pub const fn ptr() -> *const evsys::RegisterBlock {
967        0x4100_e000 as *const _
968    }
969}
970impl Deref for EVSYS {
971    type Target = evsys::RegisterBlock;
972    #[inline(always)]
973    fn deref(&self) -> &Self::Target {
974        unsafe { &*EVSYS::ptr() }
975    }
976}
977#[doc = "Event System Interface"]
978pub mod evsys;
979#[doc = "Frequency Meter"]
980pub struct FREQM {
981    _marker: PhantomData<*const ()>,
982}
983unsafe impl Send for FREQM {}
984impl FREQM {
985    #[doc = r"Returns a pointer to the register block"]
986    #[inline(always)]
987    pub const fn ptr() -> *const freqm::RegisterBlock {
988        0x4000_2c00 as *const _
989    }
990}
991impl Deref for FREQM {
992    type Target = freqm::RegisterBlock;
993    #[inline(always)]
994    fn deref(&self) -> &Self::Target {
995        unsafe { &*FREQM::ptr() }
996    }
997}
998#[doc = "Frequency Meter"]
999pub mod freqm;
1000#[doc = "Generic Clock Generator"]
1001pub struct GCLK {
1002    _marker: PhantomData<*const ()>,
1003}
1004unsafe impl Send for GCLK {}
1005impl GCLK {
1006    #[doc = r"Returns a pointer to the register block"]
1007    #[inline(always)]
1008    pub const fn ptr() -> *const gclk::RegisterBlock {
1009        0x4000_1c00 as *const _
1010    }
1011}
1012impl Deref for GCLK {
1013    type Target = gclk::RegisterBlock;
1014    #[inline(always)]
1015    fn deref(&self) -> &Self::Target {
1016        unsafe { &*GCLK::ptr() }
1017    }
1018}
1019#[doc = "Generic Clock Generator"]
1020pub mod gclk;
1021#[doc = "HSB Matrix"]
1022pub struct HMATRIX {
1023    _marker: PhantomData<*const ()>,
1024}
1025unsafe impl Send for HMATRIX {}
1026impl HMATRIX {
1027    #[doc = r"Returns a pointer to the register block"]
1028    #[inline(always)]
1029    pub const fn ptr() -> *const hmatrix::RegisterBlock {
1030        0x4100_c000 as *const _
1031    }
1032}
1033impl Deref for HMATRIX {
1034    type Target = hmatrix::RegisterBlock;
1035    #[inline(always)]
1036    fn deref(&self) -> &Self::Target {
1037        unsafe { &*HMATRIX::ptr() }
1038    }
1039}
1040#[doc = "HSB Matrix"]
1041pub mod hmatrix;
1042#[doc = "Integrity Check Monitor"]
1043pub struct ICM {
1044    _marker: PhantomData<*const ()>,
1045}
1046unsafe impl Send for ICM {}
1047impl ICM {
1048    #[doc = r"Returns a pointer to the register block"]
1049    #[inline(always)]
1050    pub const fn ptr() -> *const icm::RegisterBlock {
1051        0x4200_2c00 as *const _
1052    }
1053}
1054impl Deref for ICM {
1055    type Target = icm::RegisterBlock;
1056    #[inline(always)]
1057    fn deref(&self) -> &Self::Target {
1058        unsafe { &*ICM::ptr() }
1059    }
1060}
1061#[doc = "Integrity Check Monitor"]
1062pub mod icm;
1063#[doc = "Inter-IC Sound Interface"]
1064pub struct I2S {
1065    _marker: PhantomData<*const ()>,
1066}
1067unsafe impl Send for I2S {}
1068impl I2S {
1069    #[doc = r"Returns a pointer to the register block"]
1070    #[inline(always)]
1071    pub const fn ptr() -> *const i2s::RegisterBlock {
1072        0x4300_2800 as *const _
1073    }
1074}
1075impl Deref for I2S {
1076    type Target = i2s::RegisterBlock;
1077    #[inline(always)]
1078    fn deref(&self) -> &Self::Target {
1079        unsafe { &*I2S::ptr() }
1080    }
1081}
1082#[doc = "Inter-IC Sound Interface"]
1083pub mod i2s;
1084#[doc = "Main Clock"]
1085pub struct MCLK {
1086    _marker: PhantomData<*const ()>,
1087}
1088unsafe impl Send for MCLK {}
1089impl MCLK {
1090    #[doc = r"Returns a pointer to the register block"]
1091    #[inline(always)]
1092    pub const fn ptr() -> *const mclk::RegisterBlock {
1093        0x4000_0800 as *const _
1094    }
1095}
1096impl Deref for MCLK {
1097    type Target = mclk::RegisterBlock;
1098    #[inline(always)]
1099    fn deref(&self) -> &Self::Target {
1100        unsafe { &*MCLK::ptr() }
1101    }
1102}
1103#[doc = "Main Clock"]
1104pub mod mclk;
1105#[doc = "Non-Volatile Memory Controller"]
1106pub struct NVMCTRL {
1107    _marker: PhantomData<*const ()>,
1108}
1109unsafe impl Send for NVMCTRL {}
1110impl NVMCTRL {
1111    #[doc = r"Returns a pointer to the register block"]
1112    #[inline(always)]
1113    pub const fn ptr() -> *const nvmctrl::RegisterBlock {
1114        0x4100_4000 as *const _
1115    }
1116}
1117impl Deref for NVMCTRL {
1118    type Target = nvmctrl::RegisterBlock;
1119    #[inline(always)]
1120    fn deref(&self) -> &Self::Target {
1121        unsafe { &*NVMCTRL::ptr() }
1122    }
1123}
1124#[doc = "Non-Volatile Memory Controller"]
1125pub mod nvmctrl;
1126#[doc = "Oscillators Control"]
1127pub struct OSCCTRL {
1128    _marker: PhantomData<*const ()>,
1129}
1130unsafe impl Send for OSCCTRL {}
1131impl OSCCTRL {
1132    #[doc = r"Returns a pointer to the register block"]
1133    #[inline(always)]
1134    pub const fn ptr() -> *const oscctrl::RegisterBlock {
1135        0x4000_1000 as *const _
1136    }
1137}
1138impl Deref for OSCCTRL {
1139    type Target = oscctrl::RegisterBlock;
1140    #[inline(always)]
1141    fn deref(&self) -> &Self::Target {
1142        unsafe { &*OSCCTRL::ptr() }
1143    }
1144}
1145#[doc = "Oscillators Control"]
1146pub mod oscctrl;
1147#[doc = "32kHz Oscillators Control"]
1148pub struct OSC32KCTRL {
1149    _marker: PhantomData<*const ()>,
1150}
1151unsafe impl Send for OSC32KCTRL {}
1152impl OSC32KCTRL {
1153    #[doc = r"Returns a pointer to the register block"]
1154    #[inline(always)]
1155    pub const fn ptr() -> *const osc32kctrl::RegisterBlock {
1156        0x4000_1400 as *const _
1157    }
1158}
1159impl Deref for OSC32KCTRL {
1160    type Target = osc32kctrl::RegisterBlock;
1161    #[inline(always)]
1162    fn deref(&self) -> &Self::Target {
1163        unsafe { &*OSC32KCTRL::ptr() }
1164    }
1165}
1166#[doc = "32kHz Oscillators Control"]
1167pub mod osc32kctrl;
1168#[doc = "Peripheral Access Controller"]
1169pub struct PAC {
1170    _marker: PhantomData<*const ()>,
1171}
1172unsafe impl Send for PAC {}
1173impl PAC {
1174    #[doc = r"Returns a pointer to the register block"]
1175    #[inline(always)]
1176    pub const fn ptr() -> *const pac::RegisterBlock {
1177        0x4000_0000 as *const _
1178    }
1179}
1180impl Deref for PAC {
1181    type Target = pac::RegisterBlock;
1182    #[inline(always)]
1183    fn deref(&self) -> &Self::Target {
1184        unsafe { &*PAC::ptr() }
1185    }
1186}
1187#[doc = "Peripheral Access Controller"]
1188pub mod pac;
1189#[doc = "Parallel Capture Controller"]
1190pub struct PCC {
1191    _marker: PhantomData<*const ()>,
1192}
1193unsafe impl Send for PCC {}
1194impl PCC {
1195    #[doc = r"Returns a pointer to the register block"]
1196    #[inline(always)]
1197    pub const fn ptr() -> *const pcc::RegisterBlock {
1198        0x4300_2c00 as *const _
1199    }
1200}
1201impl Deref for PCC {
1202    type Target = pcc::RegisterBlock;
1203    #[inline(always)]
1204    fn deref(&self) -> &Self::Target {
1205        unsafe { &*PCC::ptr() }
1206    }
1207}
1208#[doc = "Parallel Capture Controller"]
1209pub mod pcc;
1210#[doc = "Quadrature Decodeur"]
1211pub struct PDEC {
1212    _marker: PhantomData<*const ()>,
1213}
1214unsafe impl Send for PDEC {}
1215impl PDEC {
1216    #[doc = r"Returns a pointer to the register block"]
1217    #[inline(always)]
1218    pub const fn ptr() -> *const pdec::RegisterBlock {
1219        0x4200_1c00 as *const _
1220    }
1221}
1222impl Deref for PDEC {
1223    type Target = pdec::RegisterBlock;
1224    #[inline(always)]
1225    fn deref(&self) -> &Self::Target {
1226        unsafe { &*PDEC::ptr() }
1227    }
1228}
1229#[doc = "Quadrature Decodeur"]
1230pub mod pdec;
1231#[doc = "Power Manager"]
1232pub struct PM {
1233    _marker: PhantomData<*const ()>,
1234}
1235unsafe impl Send for PM {}
1236impl PM {
1237    #[doc = r"Returns a pointer to the register block"]
1238    #[inline(always)]
1239    pub const fn ptr() -> *const pm::RegisterBlock {
1240        0x4000_0400 as *const _
1241    }
1242}
1243impl Deref for PM {
1244    type Target = pm::RegisterBlock;
1245    #[inline(always)]
1246    fn deref(&self) -> &Self::Target {
1247        unsafe { &*PM::ptr() }
1248    }
1249}
1250#[doc = "Power Manager"]
1251pub mod pm;
1252#[doc = "Port Module"]
1253pub struct PORT {
1254    _marker: PhantomData<*const ()>,
1255}
1256unsafe impl Send for PORT {}
1257impl PORT {
1258    #[doc = r"Returns a pointer to the register block"]
1259    #[inline(always)]
1260    pub const fn ptr() -> *const port::RegisterBlock {
1261        0x4100_8000 as *const _
1262    }
1263}
1264impl Deref for PORT {
1265    type Target = port::RegisterBlock;
1266    #[inline(always)]
1267    fn deref(&self) -> &Self::Target {
1268        unsafe { &*PORT::ptr() }
1269    }
1270}
1271#[doc = "Port Module"]
1272pub mod port;
1273#[doc = "Quad SPI interface"]
1274pub struct QSPI {
1275    _marker: PhantomData<*const ()>,
1276}
1277unsafe impl Send for QSPI {}
1278impl QSPI {
1279    #[doc = r"Returns a pointer to the register block"]
1280    #[inline(always)]
1281    pub const fn ptr() -> *const qspi::RegisterBlock {
1282        0x4200_3400 as *const _
1283    }
1284}
1285impl Deref for QSPI {
1286    type Target = qspi::RegisterBlock;
1287    #[inline(always)]
1288    fn deref(&self) -> &Self::Target {
1289        unsafe { &*QSPI::ptr() }
1290    }
1291}
1292#[doc = "Quad SPI interface"]
1293pub mod qspi;
1294#[doc = "RAM ECC"]
1295pub struct RAMECC {
1296    _marker: PhantomData<*const ()>,
1297}
1298unsafe impl Send for RAMECC {}
1299impl RAMECC {
1300    #[doc = r"Returns a pointer to the register block"]
1301    #[inline(always)]
1302    pub const fn ptr() -> *const ramecc::RegisterBlock {
1303        0x4102_0000 as *const _
1304    }
1305}
1306impl Deref for RAMECC {
1307    type Target = ramecc::RegisterBlock;
1308    #[inline(always)]
1309    fn deref(&self) -> &Self::Target {
1310        unsafe { &*RAMECC::ptr() }
1311    }
1312}
1313#[doc = "RAM ECC"]
1314pub mod ramecc;
1315#[doc = "Reset Controller"]
1316pub struct RSTC {
1317    _marker: PhantomData<*const ()>,
1318}
1319unsafe impl Send for RSTC {}
1320impl RSTC {
1321    #[doc = r"Returns a pointer to the register block"]
1322    #[inline(always)]
1323    pub const fn ptr() -> *const rstc::RegisterBlock {
1324        0x4000_0c00 as *const _
1325    }
1326}
1327impl Deref for RSTC {
1328    type Target = rstc::RegisterBlock;
1329    #[inline(always)]
1330    fn deref(&self) -> &Self::Target {
1331        unsafe { &*RSTC::ptr() }
1332    }
1333}
1334#[doc = "Reset Controller"]
1335pub mod rstc;
1336#[doc = "Real-Time Counter"]
1337pub struct RTC {
1338    _marker: PhantomData<*const ()>,
1339}
1340unsafe impl Send for RTC {}
1341impl RTC {
1342    #[doc = r"Returns a pointer to the register block"]
1343    #[inline(always)]
1344    pub const fn ptr() -> *const rtc::RegisterBlock {
1345        0x4000_2400 as *const _
1346    }
1347}
1348impl Deref for RTC {
1349    type Target = rtc::RegisterBlock;
1350    #[inline(always)]
1351    fn deref(&self) -> &Self::Target {
1352        unsafe { &*RTC::ptr() }
1353    }
1354}
1355#[doc = "Real-Time Counter"]
1356pub mod rtc;
1357#[doc = "SD/MMC Host Controller"]
1358pub struct SDHC0 {
1359    _marker: PhantomData<*const ()>,
1360}
1361unsafe impl Send for SDHC0 {}
1362impl SDHC0 {
1363    #[doc = r"Returns a pointer to the register block"]
1364    #[inline(always)]
1365    pub const fn ptr() -> *const sdhc0::RegisterBlock {
1366        0x4500_0000 as *const _
1367    }
1368}
1369impl Deref for SDHC0 {
1370    type Target = sdhc0::RegisterBlock;
1371    #[inline(always)]
1372    fn deref(&self) -> &Self::Target {
1373        unsafe { &*SDHC0::ptr() }
1374    }
1375}
1376#[doc = "SD/MMC Host Controller"]
1377pub mod sdhc0;
1378#[doc = "SD/MMC Host Controller"]
1379pub struct SDHC1 {
1380    _marker: PhantomData<*const ()>,
1381}
1382unsafe impl Send for SDHC1 {}
1383impl SDHC1 {
1384    #[doc = r"Returns a pointer to the register block"]
1385    #[inline(always)]
1386    pub const fn ptr() -> *const sdhc0::RegisterBlock {
1387        0x4600_0000 as *const _
1388    }
1389}
1390impl Deref for SDHC1 {
1391    type Target = sdhc0::RegisterBlock;
1392    #[inline(always)]
1393    fn deref(&self) -> &Self::Target {
1394        unsafe { &*SDHC1::ptr() }
1395    }
1396}
1397#[doc = "Serial Communication Interface"]
1398pub struct SERCOM0 {
1399    _marker: PhantomData<*const ()>,
1400}
1401unsafe impl Send for SERCOM0 {}
1402impl SERCOM0 {
1403    #[doc = r"Returns a pointer to the register block"]
1404    #[inline(always)]
1405    pub const fn ptr() -> *const sercom0::RegisterBlock {
1406        0x4000_3000 as *const _
1407    }
1408}
1409impl Deref for SERCOM0 {
1410    type Target = sercom0::RegisterBlock;
1411    #[inline(always)]
1412    fn deref(&self) -> &Self::Target {
1413        unsafe { &*SERCOM0::ptr() }
1414    }
1415}
1416#[doc = "Serial Communication Interface"]
1417pub mod sercom0;
1418#[doc = "Serial Communication Interface"]
1419pub struct SERCOM1 {
1420    _marker: PhantomData<*const ()>,
1421}
1422unsafe impl Send for SERCOM1 {}
1423impl SERCOM1 {
1424    #[doc = r"Returns a pointer to the register block"]
1425    #[inline(always)]
1426    pub const fn ptr() -> *const sercom0::RegisterBlock {
1427        0x4000_3400 as *const _
1428    }
1429}
1430impl Deref for SERCOM1 {
1431    type Target = sercom0::RegisterBlock;
1432    #[inline(always)]
1433    fn deref(&self) -> &Self::Target {
1434        unsafe { &*SERCOM1::ptr() }
1435    }
1436}
1437#[doc = "Serial Communication Interface"]
1438pub struct SERCOM2 {
1439    _marker: PhantomData<*const ()>,
1440}
1441unsafe impl Send for SERCOM2 {}
1442impl SERCOM2 {
1443    #[doc = r"Returns a pointer to the register block"]
1444    #[inline(always)]
1445    pub const fn ptr() -> *const sercom0::RegisterBlock {
1446        0x4101_2000 as *const _
1447    }
1448}
1449impl Deref for SERCOM2 {
1450    type Target = sercom0::RegisterBlock;
1451    #[inline(always)]
1452    fn deref(&self) -> &Self::Target {
1453        unsafe { &*SERCOM2::ptr() }
1454    }
1455}
1456#[doc = "Serial Communication Interface"]
1457pub struct SERCOM3 {
1458    _marker: PhantomData<*const ()>,
1459}
1460unsafe impl Send for SERCOM3 {}
1461impl SERCOM3 {
1462    #[doc = r"Returns a pointer to the register block"]
1463    #[inline(always)]
1464    pub const fn ptr() -> *const sercom0::RegisterBlock {
1465        0x4101_4000 as *const _
1466    }
1467}
1468impl Deref for SERCOM3 {
1469    type Target = sercom0::RegisterBlock;
1470    #[inline(always)]
1471    fn deref(&self) -> &Self::Target {
1472        unsafe { &*SERCOM3::ptr() }
1473    }
1474}
1475#[doc = "Serial Communication Interface"]
1476pub struct SERCOM4 {
1477    _marker: PhantomData<*const ()>,
1478}
1479unsafe impl Send for SERCOM4 {}
1480impl SERCOM4 {
1481    #[doc = r"Returns a pointer to the register block"]
1482    #[inline(always)]
1483    pub const fn ptr() -> *const sercom0::RegisterBlock {
1484        0x4300_0000 as *const _
1485    }
1486}
1487impl Deref for SERCOM4 {
1488    type Target = sercom0::RegisterBlock;
1489    #[inline(always)]
1490    fn deref(&self) -> &Self::Target {
1491        unsafe { &*SERCOM4::ptr() }
1492    }
1493}
1494#[doc = "Serial Communication Interface"]
1495pub struct SERCOM5 {
1496    _marker: PhantomData<*const ()>,
1497}
1498unsafe impl Send for SERCOM5 {}
1499impl SERCOM5 {
1500    #[doc = r"Returns a pointer to the register block"]
1501    #[inline(always)]
1502    pub const fn ptr() -> *const sercom0::RegisterBlock {
1503        0x4300_0400 as *const _
1504    }
1505}
1506impl Deref for SERCOM5 {
1507    type Target = sercom0::RegisterBlock;
1508    #[inline(always)]
1509    fn deref(&self) -> &Self::Target {
1510        unsafe { &*SERCOM5::ptr() }
1511    }
1512}
1513#[doc = "Serial Communication Interface"]
1514pub struct SERCOM6 {
1515    _marker: PhantomData<*const ()>,
1516}
1517unsafe impl Send for SERCOM6 {}
1518impl SERCOM6 {
1519    #[doc = r"Returns a pointer to the register block"]
1520    #[inline(always)]
1521    pub const fn ptr() -> *const sercom0::RegisterBlock {
1522        0x4300_0800 as *const _
1523    }
1524}
1525impl Deref for SERCOM6 {
1526    type Target = sercom0::RegisterBlock;
1527    #[inline(always)]
1528    fn deref(&self) -> &Self::Target {
1529        unsafe { &*SERCOM6::ptr() }
1530    }
1531}
1532#[doc = "Serial Communication Interface"]
1533pub struct SERCOM7 {
1534    _marker: PhantomData<*const ()>,
1535}
1536unsafe impl Send for SERCOM7 {}
1537impl SERCOM7 {
1538    #[doc = r"Returns a pointer to the register block"]
1539    #[inline(always)]
1540    pub const fn ptr() -> *const sercom0::RegisterBlock {
1541        0x4300_0c00 as *const _
1542    }
1543}
1544impl Deref for SERCOM7 {
1545    type Target = sercom0::RegisterBlock;
1546    #[inline(always)]
1547    fn deref(&self) -> &Self::Target {
1548        unsafe { &*SERCOM7::ptr() }
1549    }
1550}
1551#[doc = "Supply Controller"]
1552pub struct SUPC {
1553    _marker: PhantomData<*const ()>,
1554}
1555unsafe impl Send for SUPC {}
1556impl SUPC {
1557    #[doc = r"Returns a pointer to the register block"]
1558    #[inline(always)]
1559    pub const fn ptr() -> *const supc::RegisterBlock {
1560        0x4000_1800 as *const _
1561    }
1562}
1563impl Deref for SUPC {
1564    type Target = supc::RegisterBlock;
1565    #[inline(always)]
1566    fn deref(&self) -> &Self::Target {
1567        unsafe { &*SUPC::ptr() }
1568    }
1569}
1570#[doc = "Supply Controller"]
1571pub mod supc;
1572#[doc = "Basic Timer Counter"]
1573pub struct TC0 {
1574    _marker: PhantomData<*const ()>,
1575}
1576unsafe impl Send for TC0 {}
1577impl TC0 {
1578    #[doc = r"Returns a pointer to the register block"]
1579    #[inline(always)]
1580    pub const fn ptr() -> *const tc0::RegisterBlock {
1581        0x4000_3800 as *const _
1582    }
1583}
1584impl Deref for TC0 {
1585    type Target = tc0::RegisterBlock;
1586    #[inline(always)]
1587    fn deref(&self) -> &Self::Target {
1588        unsafe { &*TC0::ptr() }
1589    }
1590}
1591#[doc = "Basic Timer Counter"]
1592pub mod tc0;
1593#[doc = "Basic Timer Counter"]
1594pub struct TC1 {
1595    _marker: PhantomData<*const ()>,
1596}
1597unsafe impl Send for TC1 {}
1598impl TC1 {
1599    #[doc = r"Returns a pointer to the register block"]
1600    #[inline(always)]
1601    pub const fn ptr() -> *const tc0::RegisterBlock {
1602        0x4000_3c00 as *const _
1603    }
1604}
1605impl Deref for TC1 {
1606    type Target = tc0::RegisterBlock;
1607    #[inline(always)]
1608    fn deref(&self) -> &Self::Target {
1609        unsafe { &*TC1::ptr() }
1610    }
1611}
1612#[doc = "Basic Timer Counter"]
1613pub struct TC2 {
1614    _marker: PhantomData<*const ()>,
1615}
1616unsafe impl Send for TC2 {}
1617impl TC2 {
1618    #[doc = r"Returns a pointer to the register block"]
1619    #[inline(always)]
1620    pub const fn ptr() -> *const tc0::RegisterBlock {
1621        0x4101_a000 as *const _
1622    }
1623}
1624impl Deref for TC2 {
1625    type Target = tc0::RegisterBlock;
1626    #[inline(always)]
1627    fn deref(&self) -> &Self::Target {
1628        unsafe { &*TC2::ptr() }
1629    }
1630}
1631#[doc = "Basic Timer Counter"]
1632pub struct TC3 {
1633    _marker: PhantomData<*const ()>,
1634}
1635unsafe impl Send for TC3 {}
1636impl TC3 {
1637    #[doc = r"Returns a pointer to the register block"]
1638    #[inline(always)]
1639    pub const fn ptr() -> *const tc0::RegisterBlock {
1640        0x4101_c000 as *const _
1641    }
1642}
1643impl Deref for TC3 {
1644    type Target = tc0::RegisterBlock;
1645    #[inline(always)]
1646    fn deref(&self) -> &Self::Target {
1647        unsafe { &*TC3::ptr() }
1648    }
1649}
1650#[doc = "Basic Timer Counter"]
1651pub struct TC4 {
1652    _marker: PhantomData<*const ()>,
1653}
1654unsafe impl Send for TC4 {}
1655impl TC4 {
1656    #[doc = r"Returns a pointer to the register block"]
1657    #[inline(always)]
1658    pub const fn ptr() -> *const tc0::RegisterBlock {
1659        0x4200_1400 as *const _
1660    }
1661}
1662impl Deref for TC4 {
1663    type Target = tc0::RegisterBlock;
1664    #[inline(always)]
1665    fn deref(&self) -> &Self::Target {
1666        unsafe { &*TC4::ptr() }
1667    }
1668}
1669#[doc = "Basic Timer Counter"]
1670pub struct TC5 {
1671    _marker: PhantomData<*const ()>,
1672}
1673unsafe impl Send for TC5 {}
1674impl TC5 {
1675    #[doc = r"Returns a pointer to the register block"]
1676    #[inline(always)]
1677    pub const fn ptr() -> *const tc0::RegisterBlock {
1678        0x4200_1800 as *const _
1679    }
1680}
1681impl Deref for TC5 {
1682    type Target = tc0::RegisterBlock;
1683    #[inline(always)]
1684    fn deref(&self) -> &Self::Target {
1685        unsafe { &*TC5::ptr() }
1686    }
1687}
1688#[doc = "Basic Timer Counter"]
1689pub struct TC6 {
1690    _marker: PhantomData<*const ()>,
1691}
1692unsafe impl Send for TC6 {}
1693impl TC6 {
1694    #[doc = r"Returns a pointer to the register block"]
1695    #[inline(always)]
1696    pub const fn ptr() -> *const tc0::RegisterBlock {
1697        0x4300_1400 as *const _
1698    }
1699}
1700impl Deref for TC6 {
1701    type Target = tc0::RegisterBlock;
1702    #[inline(always)]
1703    fn deref(&self) -> &Self::Target {
1704        unsafe { &*TC6::ptr() }
1705    }
1706}
1707#[doc = "Basic Timer Counter"]
1708pub struct TC7 {
1709    _marker: PhantomData<*const ()>,
1710}
1711unsafe impl Send for TC7 {}
1712impl TC7 {
1713    #[doc = r"Returns a pointer to the register block"]
1714    #[inline(always)]
1715    pub const fn ptr() -> *const tc0::RegisterBlock {
1716        0x4300_1800 as *const _
1717    }
1718}
1719impl Deref for TC7 {
1720    type Target = tc0::RegisterBlock;
1721    #[inline(always)]
1722    fn deref(&self) -> &Self::Target {
1723        unsafe { &*TC7::ptr() }
1724    }
1725}
1726#[doc = "Timer Counter Control"]
1727pub struct TCC0 {
1728    _marker: PhantomData<*const ()>,
1729}
1730unsafe impl Send for TCC0 {}
1731impl TCC0 {
1732    #[doc = r"Returns a pointer to the register block"]
1733    #[inline(always)]
1734    pub const fn ptr() -> *const tcc0::RegisterBlock {
1735        0x4101_6000 as *const _
1736    }
1737}
1738impl Deref for TCC0 {
1739    type Target = tcc0::RegisterBlock;
1740    #[inline(always)]
1741    fn deref(&self) -> &Self::Target {
1742        unsafe { &*TCC0::ptr() }
1743    }
1744}
1745#[doc = "Timer Counter Control"]
1746pub mod tcc0;
1747#[doc = "Timer Counter Control"]
1748pub struct TCC1 {
1749    _marker: PhantomData<*const ()>,
1750}
1751unsafe impl Send for TCC1 {}
1752impl TCC1 {
1753    #[doc = r"Returns a pointer to the register block"]
1754    #[inline(always)]
1755    pub const fn ptr() -> *const tcc0::RegisterBlock {
1756        0x4101_8000 as *const _
1757    }
1758}
1759impl Deref for TCC1 {
1760    type Target = tcc0::RegisterBlock;
1761    #[inline(always)]
1762    fn deref(&self) -> &Self::Target {
1763        unsafe { &*TCC1::ptr() }
1764    }
1765}
1766#[doc = "Timer Counter Control"]
1767pub struct TCC2 {
1768    _marker: PhantomData<*const ()>,
1769}
1770unsafe impl Send for TCC2 {}
1771impl TCC2 {
1772    #[doc = r"Returns a pointer to the register block"]
1773    #[inline(always)]
1774    pub const fn ptr() -> *const tcc0::RegisterBlock {
1775        0x4200_0c00 as *const _
1776    }
1777}
1778impl Deref for TCC2 {
1779    type Target = tcc0::RegisterBlock;
1780    #[inline(always)]
1781    fn deref(&self) -> &Self::Target {
1782        unsafe { &*TCC2::ptr() }
1783    }
1784}
1785#[doc = "Timer Counter Control"]
1786pub struct TCC3 {
1787    _marker: PhantomData<*const ()>,
1788}
1789unsafe impl Send for TCC3 {}
1790impl TCC3 {
1791    #[doc = r"Returns a pointer to the register block"]
1792    #[inline(always)]
1793    pub const fn ptr() -> *const tcc0::RegisterBlock {
1794        0x4200_1000 as *const _
1795    }
1796}
1797impl Deref for TCC3 {
1798    type Target = tcc0::RegisterBlock;
1799    #[inline(always)]
1800    fn deref(&self) -> &Self::Target {
1801        unsafe { &*TCC3::ptr() }
1802    }
1803}
1804#[doc = "Timer Counter Control"]
1805pub struct TCC4 {
1806    _marker: PhantomData<*const ()>,
1807}
1808unsafe impl Send for TCC4 {}
1809impl TCC4 {
1810    #[doc = r"Returns a pointer to the register block"]
1811    #[inline(always)]
1812    pub const fn ptr() -> *const tcc0::RegisterBlock {
1813        0x4300_1000 as *const _
1814    }
1815}
1816impl Deref for TCC4 {
1817    type Target = tcc0::RegisterBlock;
1818    #[inline(always)]
1819    fn deref(&self) -> &Self::Target {
1820        unsafe { &*TCC4::ptr() }
1821    }
1822}
1823#[doc = "True Random Generator"]
1824pub struct TRNG {
1825    _marker: PhantomData<*const ()>,
1826}
1827unsafe impl Send for TRNG {}
1828impl TRNG {
1829    #[doc = r"Returns a pointer to the register block"]
1830    #[inline(always)]
1831    pub const fn ptr() -> *const trng::RegisterBlock {
1832        0x4200_2800 as *const _
1833    }
1834}
1835impl Deref for TRNG {
1836    type Target = trng::RegisterBlock;
1837    #[inline(always)]
1838    fn deref(&self) -> &Self::Target {
1839        unsafe { &*TRNG::ptr() }
1840    }
1841}
1842#[doc = "True Random Generator"]
1843pub mod trng;
1844#[doc = "Universal Serial Bus"]
1845pub struct USB {
1846    _marker: PhantomData<*const ()>,
1847}
1848unsafe impl Send for USB {}
1849impl USB {
1850    #[doc = r"Returns a pointer to the register block"]
1851    #[inline(always)]
1852    pub const fn ptr() -> *const usb::RegisterBlock {
1853        0x4100_0000 as *const _
1854    }
1855}
1856impl Deref for USB {
1857    type Target = usb::RegisterBlock;
1858    #[inline(always)]
1859    fn deref(&self) -> &Self::Target {
1860        unsafe { &*USB::ptr() }
1861    }
1862}
1863#[doc = "Universal Serial Bus"]
1864pub mod usb;
1865#[doc = "Watchdog Timer"]
1866pub struct WDT {
1867    _marker: PhantomData<*const ()>,
1868}
1869unsafe impl Send for WDT {}
1870impl WDT {
1871    #[doc = r"Returns a pointer to the register block"]
1872    #[inline(always)]
1873    pub const fn ptr() -> *const wdt::RegisterBlock {
1874        0x4000_2000 as *const _
1875    }
1876}
1877impl Deref for WDT {
1878    type Target = wdt::RegisterBlock;
1879    #[inline(always)]
1880    fn deref(&self) -> &Self::Target {
1881        unsafe { &*WDT::ptr() }
1882    }
1883}
1884#[doc = "Watchdog Timer"]
1885pub mod wdt;
1886#[doc = "Core Debug Register"]
1887pub struct COREDEBUG {
1888    _marker: PhantomData<*const ()>,
1889}
1890unsafe impl Send for COREDEBUG {}
1891impl COREDEBUG {
1892    #[doc = r"Returns a pointer to the register block"]
1893    #[inline(always)]
1894    pub const fn ptr() -> *const core_debug::RegisterBlock {
1895        0xe000_edf0 as *const _
1896    }
1897}
1898impl Deref for COREDEBUG {
1899    type Target = core_debug::RegisterBlock;
1900    #[inline(always)]
1901    fn deref(&self) -> &Self::Target {
1902        unsafe { &*COREDEBUG::ptr() }
1903    }
1904}
1905#[doc = "Core Debug Register"]
1906pub mod core_debug;
1907#[doc = "Embedded Trace Macrocell"]
1908pub struct ETM {
1909    _marker: PhantomData<*const ()>,
1910}
1911unsafe impl Send for ETM {}
1912impl ETM {
1913    #[doc = r"Returns a pointer to the register block"]
1914    #[inline(always)]
1915    pub const fn ptr() -> *const etm::RegisterBlock {
1916        0xe004_1000 as *const _
1917    }
1918}
1919impl Deref for ETM {
1920    type Target = etm::RegisterBlock;
1921    #[inline(always)]
1922    fn deref(&self) -> &Self::Target {
1923        unsafe { &*ETM::ptr() }
1924    }
1925}
1926#[doc = "Embedded Trace Macrocell"]
1927pub mod etm;
1928#[doc = "System timer"]
1929pub struct SYSTICK {
1930    _marker: PhantomData<*const ()>,
1931}
1932unsafe impl Send for SYSTICK {}
1933impl SYSTICK {
1934    #[doc = r"Returns a pointer to the register block"]
1935    #[inline(always)]
1936    pub const fn ptr() -> *const sys_tick::RegisterBlock {
1937        0xe000_e010 as *const _
1938    }
1939}
1940impl Deref for SYSTICK {
1941    type Target = sys_tick::RegisterBlock;
1942    #[inline(always)]
1943    fn deref(&self) -> &Self::Target {
1944        unsafe { &*SYSTICK::ptr() }
1945    }
1946}
1947#[doc = "System timer"]
1948pub mod sys_tick;
1949#[doc = "System Control Registers"]
1950pub struct SYSTEMCONTROL {
1951    _marker: PhantomData<*const ()>,
1952}
1953unsafe impl Send for SYSTEMCONTROL {}
1954impl SYSTEMCONTROL {
1955    #[doc = r"Returns a pointer to the register block"]
1956    #[inline(always)]
1957    pub const fn ptr() -> *const system_control::RegisterBlock {
1958        0xe000_e000 as *const _
1959    }
1960}
1961impl Deref for SYSTEMCONTROL {
1962    type Target = system_control::RegisterBlock;
1963    #[inline(always)]
1964    fn deref(&self) -> &Self::Target {
1965        unsafe { &*SYSTEMCONTROL::ptr() }
1966    }
1967}
1968#[doc = "System Control Registers"]
1969pub mod system_control;
1970#[doc = "Trace Port Interface Register"]
1971pub struct TPI {
1972    _marker: PhantomData<*const ()>,
1973}
1974unsafe impl Send for TPI {}
1975impl TPI {
1976    #[doc = r"Returns a pointer to the register block"]
1977    #[inline(always)]
1978    pub const fn ptr() -> *const tpi::RegisterBlock {
1979        0xe004_0000 as *const _
1980    }
1981}
1982impl Deref for TPI {
1983    type Target = tpi::RegisterBlock;
1984    #[inline(always)]
1985    fn deref(&self) -> &Self::Target {
1986        unsafe { &*TPI::ptr() }
1987    }
1988}
1989#[doc = "Trace Port Interface Register"]
1990pub mod tpi;
1991#[no_mangle]
1992static mut DEVICE_PERIPHERALS: bool = false;
1993#[doc = r"All the peripherals"]
1994#[allow(non_snake_case)]
1995pub struct Peripherals {
1996    #[doc = "AC"]
1997    pub AC: AC,
1998    #[doc = "ADC0"]
1999    pub ADC0: ADC0,
2000    #[doc = "ADC1"]
2001    pub ADC1: ADC1,
2002    #[doc = "AES"]
2003    pub AES: AES,
2004    #[doc = "CCL"]
2005    pub CCL: CCL,
2006    #[doc = "CMCC"]
2007    pub CMCC: CMCC,
2008    #[doc = "DAC"]
2009    pub DAC: DAC,
2010    #[doc = "DMAC"]
2011    pub DMAC: DMAC,
2012    #[doc = "DSU"]
2013    pub DSU: DSU,
2014    #[doc = "EIC"]
2015    pub EIC: EIC,
2016    #[doc = "EVSYS"]
2017    pub EVSYS: EVSYS,
2018    #[doc = "FREQM"]
2019    pub FREQM: FREQM,
2020    #[doc = "GCLK"]
2021    pub GCLK: GCLK,
2022    #[doc = "HMATRIX"]
2023    pub HMATRIX: HMATRIX,
2024    #[doc = "ICM"]
2025    pub ICM: ICM,
2026    #[doc = "I2S"]
2027    pub I2S: I2S,
2028    #[doc = "MCLK"]
2029    pub MCLK: MCLK,
2030    #[doc = "NVMCTRL"]
2031    pub NVMCTRL: NVMCTRL,
2032    #[doc = "OSCCTRL"]
2033    pub OSCCTRL: OSCCTRL,
2034    #[doc = "OSC32KCTRL"]
2035    pub OSC32KCTRL: OSC32KCTRL,
2036    #[doc = "PAC"]
2037    pub PAC: PAC,
2038    #[doc = "PCC"]
2039    pub PCC: PCC,
2040    #[doc = "PDEC"]
2041    pub PDEC: PDEC,
2042    #[doc = "PM"]
2043    pub PM: PM,
2044    #[doc = "PORT"]
2045    pub PORT: PORT,
2046    #[doc = "QSPI"]
2047    pub QSPI: QSPI,
2048    #[doc = "RAMECC"]
2049    pub RAMECC: RAMECC,
2050    #[doc = "RSTC"]
2051    pub RSTC: RSTC,
2052    #[doc = "RTC"]
2053    pub RTC: RTC,
2054    #[doc = "SDHC0"]
2055    pub SDHC0: SDHC0,
2056    #[doc = "SDHC1"]
2057    pub SDHC1: SDHC1,
2058    #[doc = "SERCOM0"]
2059    pub SERCOM0: SERCOM0,
2060    #[doc = "SERCOM1"]
2061    pub SERCOM1: SERCOM1,
2062    #[doc = "SERCOM2"]
2063    pub SERCOM2: SERCOM2,
2064    #[doc = "SERCOM3"]
2065    pub SERCOM3: SERCOM3,
2066    #[doc = "SERCOM4"]
2067    pub SERCOM4: SERCOM4,
2068    #[doc = "SERCOM5"]
2069    pub SERCOM5: SERCOM5,
2070    #[doc = "SERCOM6"]
2071    pub SERCOM6: SERCOM6,
2072    #[doc = "SERCOM7"]
2073    pub SERCOM7: SERCOM7,
2074    #[doc = "SUPC"]
2075    pub SUPC: SUPC,
2076    #[doc = "TC0"]
2077    pub TC0: TC0,
2078    #[doc = "TC1"]
2079    pub TC1: TC1,
2080    #[doc = "TC2"]
2081    pub TC2: TC2,
2082    #[doc = "TC3"]
2083    pub TC3: TC3,
2084    #[doc = "TC4"]
2085    pub TC4: TC4,
2086    #[doc = "TC5"]
2087    pub TC5: TC5,
2088    #[doc = "TC6"]
2089    pub TC6: TC6,
2090    #[doc = "TC7"]
2091    pub TC7: TC7,
2092    #[doc = "TCC0"]
2093    pub TCC0: TCC0,
2094    #[doc = "TCC1"]
2095    pub TCC1: TCC1,
2096    #[doc = "TCC2"]
2097    pub TCC2: TCC2,
2098    #[doc = "TCC3"]
2099    pub TCC3: TCC3,
2100    #[doc = "TCC4"]
2101    pub TCC4: TCC4,
2102    #[doc = "TRNG"]
2103    pub TRNG: TRNG,
2104    #[doc = "USB"]
2105    pub USB: USB,
2106    #[doc = "WDT"]
2107    pub WDT: WDT,
2108    #[doc = "COREDEBUG"]
2109    pub COREDEBUG: COREDEBUG,
2110    #[doc = "ETM"]
2111    pub ETM: ETM,
2112    #[doc = "SYSTICK"]
2113    pub SYSTICK: SYSTICK,
2114    #[doc = "SYSTEMCONTROL"]
2115    pub SYSTEMCONTROL: SYSTEMCONTROL,
2116    #[doc = "TPI"]
2117    pub TPI: TPI,
2118}
2119impl Peripherals {
2120    #[doc = r"Returns all the peripherals *once*"]
2121    #[inline]
2122    pub fn take() -> Option<Self> {
2123        cortex_m::interrupt::free(|_| {
2124            if unsafe { DEVICE_PERIPHERALS } {
2125                None
2126            } else {
2127                Some(unsafe { Peripherals::steal() })
2128            }
2129        })
2130    }
2131    #[doc = r"Unchecked version of `Peripherals::take`"]
2132    #[inline]
2133    pub unsafe fn steal() -> Self {
2134        DEVICE_PERIPHERALS = true;
2135        Peripherals {
2136            AC: AC {
2137                _marker: PhantomData,
2138            },
2139            ADC0: ADC0 {
2140                _marker: PhantomData,
2141            },
2142            ADC1: ADC1 {
2143                _marker: PhantomData,
2144            },
2145            AES: AES {
2146                _marker: PhantomData,
2147            },
2148            CCL: CCL {
2149                _marker: PhantomData,
2150            },
2151            CMCC: CMCC {
2152                _marker: PhantomData,
2153            },
2154            DAC: DAC {
2155                _marker: PhantomData,
2156            },
2157            DMAC: DMAC {
2158                _marker: PhantomData,
2159            },
2160            DSU: DSU {
2161                _marker: PhantomData,
2162            },
2163            EIC: EIC {
2164                _marker: PhantomData,
2165            },
2166            EVSYS: EVSYS {
2167                _marker: PhantomData,
2168            },
2169            FREQM: FREQM {
2170                _marker: PhantomData,
2171            },
2172            GCLK: GCLK {
2173                _marker: PhantomData,
2174            },
2175            HMATRIX: HMATRIX {
2176                _marker: PhantomData,
2177            },
2178            ICM: ICM {
2179                _marker: PhantomData,
2180            },
2181            I2S: I2S {
2182                _marker: PhantomData,
2183            },
2184            MCLK: MCLK {
2185                _marker: PhantomData,
2186            },
2187            NVMCTRL: NVMCTRL {
2188                _marker: PhantomData,
2189            },
2190            OSCCTRL: OSCCTRL {
2191                _marker: PhantomData,
2192            },
2193            OSC32KCTRL: OSC32KCTRL {
2194                _marker: PhantomData,
2195            },
2196            PAC: PAC {
2197                _marker: PhantomData,
2198            },
2199            PCC: PCC {
2200                _marker: PhantomData,
2201            },
2202            PDEC: PDEC {
2203                _marker: PhantomData,
2204            },
2205            PM: PM {
2206                _marker: PhantomData,
2207            },
2208            PORT: PORT {
2209                _marker: PhantomData,
2210            },
2211            QSPI: QSPI {
2212                _marker: PhantomData,
2213            },
2214            RAMECC: RAMECC {
2215                _marker: PhantomData,
2216            },
2217            RSTC: RSTC {
2218                _marker: PhantomData,
2219            },
2220            RTC: RTC {
2221                _marker: PhantomData,
2222            },
2223            SDHC0: SDHC0 {
2224                _marker: PhantomData,
2225            },
2226            SDHC1: SDHC1 {
2227                _marker: PhantomData,
2228            },
2229            SERCOM0: SERCOM0 {
2230                _marker: PhantomData,
2231            },
2232            SERCOM1: SERCOM1 {
2233                _marker: PhantomData,
2234            },
2235            SERCOM2: SERCOM2 {
2236                _marker: PhantomData,
2237            },
2238            SERCOM3: SERCOM3 {
2239                _marker: PhantomData,
2240            },
2241            SERCOM4: SERCOM4 {
2242                _marker: PhantomData,
2243            },
2244            SERCOM5: SERCOM5 {
2245                _marker: PhantomData,
2246            },
2247            SERCOM6: SERCOM6 {
2248                _marker: PhantomData,
2249            },
2250            SERCOM7: SERCOM7 {
2251                _marker: PhantomData,
2252            },
2253            SUPC: SUPC {
2254                _marker: PhantomData,
2255            },
2256            TC0: TC0 {
2257                _marker: PhantomData,
2258            },
2259            TC1: TC1 {
2260                _marker: PhantomData,
2261            },
2262            TC2: TC2 {
2263                _marker: PhantomData,
2264            },
2265            TC3: TC3 {
2266                _marker: PhantomData,
2267            },
2268            TC4: TC4 {
2269                _marker: PhantomData,
2270            },
2271            TC5: TC5 {
2272                _marker: PhantomData,
2273            },
2274            TC6: TC6 {
2275                _marker: PhantomData,
2276            },
2277            TC7: TC7 {
2278                _marker: PhantomData,
2279            },
2280            TCC0: TCC0 {
2281                _marker: PhantomData,
2282            },
2283            TCC1: TCC1 {
2284                _marker: PhantomData,
2285            },
2286            TCC2: TCC2 {
2287                _marker: PhantomData,
2288            },
2289            TCC3: TCC3 {
2290                _marker: PhantomData,
2291            },
2292            TCC4: TCC4 {
2293                _marker: PhantomData,
2294            },
2295            TRNG: TRNG {
2296                _marker: PhantomData,
2297            },
2298            USB: USB {
2299                _marker: PhantomData,
2300            },
2301            WDT: WDT {
2302                _marker: PhantomData,
2303            },
2304            COREDEBUG: COREDEBUG {
2305                _marker: PhantomData,
2306            },
2307            ETM: ETM {
2308                _marker: PhantomData,
2309            },
2310            SYSTICK: SYSTICK {
2311                _marker: PhantomData,
2312            },
2313            SYSTEMCONTROL: SYSTEMCONTROL {
2314                _marker: PhantomData,
2315            },
2316            TPI: TPI {
2317                _marker: PhantomData,
2318            },
2319        }
2320    }
2321}