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}