1#![doc = "Peripheral access API for EFM32TG11B340F64GM64 microcontrollers (generated using svd2rust v0.24.0 ( ))\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.24.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]
21use core::marker::PhantomData;
22use core::ops::Deref;
23#[doc = r"Number available in the NVIC for configuring priority"]
24pub const NVIC_PRIO_BITS: u8 = 3;
25#[cfg(feature = "rt")]
26pub use self::Interrupt as interrupt;
27pub use cortex_m::peripheral::Peripherals as CorePeripherals;
28pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, ITM, MPU, NVIC, SCB, SYST, TPIU};
29#[cfg(feature = "rt")]
30pub use cortex_m_rt::interrupt;
31#[allow(unused_imports)]
32use generic::*;
33#[doc = r"Common register and bit access and modify traits"]
34pub mod generic;
35#[cfg(feature = "rt")]
36extern "C" {
37 fn EMU();
38 fn WDOG0();
39 fn LDMA();
40 fn GPIO_EVEN();
41 fn SMU();
42 fn TIMER0();
43 fn USART0();
44 fn ACMP0();
45 fn ADC0();
46 fn I2C0();
47 fn I2C1();
48 fn GPIO_ODD();
49 fn TIMER1();
50 fn USART1();
51 fn USART2();
52 fn UART0();
53 fn LEUART0();
54 fn LETIMER0();
55 fn PCNT0();
56 fn RTCC();
57 fn CMU();
58 fn MSC();
59 fn CRYPTO0();
60 fn CRYOTIMER();
61 fn USART3();
62 fn WTIMER0();
63 fn WTIMER1();
64 fn VDAC0();
65 fn CSEN();
66 fn LESENSE();
67 fn LCD();
68 fn CAN0();
69}
70#[doc(hidden)]
71pub union Vector {
72 _handler: unsafe extern "C" fn(),
73 _reserved: u32,
74}
75#[cfg(feature = "rt")]
76#[doc(hidden)]
77#[link_section = ".vector_table.interrupts"]
78#[no_mangle]
79pub static __INTERRUPTS: [Vector; 32] = [
80 Vector { _handler: EMU },
81 Vector { _handler: WDOG0 },
82 Vector { _handler: LDMA },
83 Vector {
84 _handler: GPIO_EVEN,
85 },
86 Vector { _handler: SMU },
87 Vector { _handler: TIMER0 },
88 Vector { _handler: USART0 },
89 Vector { _handler: ACMP0 },
90 Vector { _handler: ADC0 },
91 Vector { _handler: I2C0 },
92 Vector { _handler: I2C1 },
93 Vector { _handler: GPIO_ODD },
94 Vector { _handler: TIMER1 },
95 Vector { _handler: USART1 },
96 Vector { _handler: USART2 },
97 Vector { _handler: UART0 },
98 Vector { _handler: LEUART0 },
99 Vector { _handler: LETIMER0 },
100 Vector { _handler: PCNT0 },
101 Vector { _handler: RTCC },
102 Vector { _handler: CMU },
103 Vector { _handler: MSC },
104 Vector { _handler: CRYPTO0 },
105 Vector {
106 _handler: CRYOTIMER,
107 },
108 Vector { _handler: USART3 },
109 Vector { _handler: WTIMER0 },
110 Vector { _handler: WTIMER1 },
111 Vector { _handler: VDAC0 },
112 Vector { _handler: CSEN },
113 Vector { _handler: LESENSE },
114 Vector { _handler: LCD },
115 Vector { _handler: CAN0 },
116];
117#[doc = r"Enumeration of all the interrupts."]
118#[derive(Copy, Clone, Debug, PartialEq, Eq)]
119#[repr(u16)]
120pub enum Interrupt {
121 #[doc = "0 - EMU"]
122 EMU = 0,
123 #[doc = "1 - WDOG0"]
124 WDOG0 = 1,
125 #[doc = "2 - LDMA"]
126 LDMA = 2,
127 #[doc = "3 - GPIO_EVEN"]
128 GPIO_EVEN = 3,
129 #[doc = "4 - SMU"]
130 SMU = 4,
131 #[doc = "5 - TIMER0"]
132 TIMER0 = 5,
133 #[doc = "6 - USART0"]
134 USART0 = 6,
135 #[doc = "7 - ACMP0"]
136 ACMP0 = 7,
137 #[doc = "8 - ADC0"]
138 ADC0 = 8,
139 #[doc = "9 - I2C0"]
140 I2C0 = 9,
141 #[doc = "10 - I2C1"]
142 I2C1 = 10,
143 #[doc = "11 - GPIO_ODD"]
144 GPIO_ODD = 11,
145 #[doc = "12 - TIMER1"]
146 TIMER1 = 12,
147 #[doc = "13 - USART1"]
148 USART1 = 13,
149 #[doc = "14 - USART2"]
150 USART2 = 14,
151 #[doc = "15 - UART0"]
152 UART0 = 15,
153 #[doc = "16 - LEUART0"]
154 LEUART0 = 16,
155 #[doc = "17 - LETIMER0"]
156 LETIMER0 = 17,
157 #[doc = "18 - PCNT0"]
158 PCNT0 = 18,
159 #[doc = "19 - RTCC"]
160 RTCC = 19,
161 #[doc = "20 - CMU"]
162 CMU = 20,
163 #[doc = "21 - MSC"]
164 MSC = 21,
165 #[doc = "22 - CRYPTO0"]
166 CRYPTO0 = 22,
167 #[doc = "23 - CRYOTIMER"]
168 CRYOTIMER = 23,
169 #[doc = "24 - USART3"]
170 USART3 = 24,
171 #[doc = "25 - WTIMER0"]
172 WTIMER0 = 25,
173 #[doc = "26 - WTIMER1"]
174 WTIMER1 = 26,
175 #[doc = "27 - VDAC0"]
176 VDAC0 = 27,
177 #[doc = "28 - CSEN"]
178 CSEN = 28,
179 #[doc = "29 - LESENSE"]
180 LESENSE = 29,
181 #[doc = "30 - LCD"]
182 LCD = 30,
183 #[doc = "31 - CAN0"]
184 CAN0 = 31,
185}
186unsafe impl cortex_m::interrupt::InterruptNumber for Interrupt {
187 #[inline(always)]
188 fn number(self) -> u16 {
189 self as u16
190 }
191}
192#[doc = "MSC"]
193pub struct MSC {
194 _marker: PhantomData<*const ()>,
195}
196unsafe impl Send for MSC {}
197impl MSC {
198 #[doc = r"Pointer to the register block"]
199 pub const PTR: *const msc::RegisterBlock = 0x4000_0000 as *const _;
200 #[doc = r"Return the pointer to the register block"]
201 #[inline(always)]
202 pub const fn ptr() -> *const msc::RegisterBlock {
203 Self::PTR
204 }
205}
206impl Deref for MSC {
207 type Target = msc::RegisterBlock;
208 #[inline(always)]
209 fn deref(&self) -> &Self::Target {
210 unsafe { &*Self::PTR }
211 }
212}
213impl core::fmt::Debug for MSC {
214 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
215 f.debug_struct("MSC").finish()
216 }
217}
218#[doc = "MSC"]
219pub mod msc;
220#[doc = "EMU"]
221pub struct EMU {
222 _marker: PhantomData<*const ()>,
223}
224unsafe impl Send for EMU {}
225impl EMU {
226 #[doc = r"Pointer to the register block"]
227 pub const PTR: *const emu::RegisterBlock = 0x400e_3000 as *const _;
228 #[doc = r"Return the pointer to the register block"]
229 #[inline(always)]
230 pub const fn ptr() -> *const emu::RegisterBlock {
231 Self::PTR
232 }
233}
234impl Deref for EMU {
235 type Target = emu::RegisterBlock;
236 #[inline(always)]
237 fn deref(&self) -> &Self::Target {
238 unsafe { &*Self::PTR }
239 }
240}
241impl core::fmt::Debug for EMU {
242 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
243 f.debug_struct("EMU").finish()
244 }
245}
246#[doc = "EMU"]
247pub mod emu;
248#[doc = "RMU"]
249pub struct RMU {
250 _marker: PhantomData<*const ()>,
251}
252unsafe impl Send for RMU {}
253impl RMU {
254 #[doc = r"Pointer to the register block"]
255 pub const PTR: *const rmu::RegisterBlock = 0x400e_5000 as *const _;
256 #[doc = r"Return the pointer to the register block"]
257 #[inline(always)]
258 pub const fn ptr() -> *const rmu::RegisterBlock {
259 Self::PTR
260 }
261}
262impl Deref for RMU {
263 type Target = rmu::RegisterBlock;
264 #[inline(always)]
265 fn deref(&self) -> &Self::Target {
266 unsafe { &*Self::PTR }
267 }
268}
269impl core::fmt::Debug for RMU {
270 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
271 f.debug_struct("RMU").finish()
272 }
273}
274#[doc = "RMU"]
275pub mod rmu;
276#[doc = "CMU"]
277pub struct CMU {
278 _marker: PhantomData<*const ()>,
279}
280unsafe impl Send for CMU {}
281impl CMU {
282 #[doc = r"Pointer to the register block"]
283 pub const PTR: *const cmu::RegisterBlock = 0x400e_4000 as *const _;
284 #[doc = r"Return the pointer to the register block"]
285 #[inline(always)]
286 pub const fn ptr() -> *const cmu::RegisterBlock {
287 Self::PTR
288 }
289}
290impl Deref for CMU {
291 type Target = cmu::RegisterBlock;
292 #[inline(always)]
293 fn deref(&self) -> &Self::Target {
294 unsafe { &*Self::PTR }
295 }
296}
297impl core::fmt::Debug for CMU {
298 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
299 f.debug_struct("CMU").finish()
300 }
301}
302#[doc = "CMU"]
303pub mod cmu;
304#[doc = "CRYPTO0"]
305pub struct CRYPTO0 {
306 _marker: PhantomData<*const ()>,
307}
308unsafe impl Send for CRYPTO0 {}
309impl CRYPTO0 {
310 #[doc = r"Pointer to the register block"]
311 pub const PTR: *const crypto0::RegisterBlock = 0x400f_0000 as *const _;
312 #[doc = r"Return the pointer to the register block"]
313 #[inline(always)]
314 pub const fn ptr() -> *const crypto0::RegisterBlock {
315 Self::PTR
316 }
317}
318impl Deref for CRYPTO0 {
319 type Target = crypto0::RegisterBlock;
320 #[inline(always)]
321 fn deref(&self) -> &Self::Target {
322 unsafe { &*Self::PTR }
323 }
324}
325impl core::fmt::Debug for CRYPTO0 {
326 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
327 f.debug_struct("CRYPTO0").finish()
328 }
329}
330#[doc = "CRYPTO0"]
331pub mod crypto0;
332#[doc = "LESENSE"]
333pub struct LESENSE {
334 _marker: PhantomData<*const ()>,
335}
336unsafe impl Send for LESENSE {}
337impl LESENSE {
338 #[doc = r"Pointer to the register block"]
339 pub const PTR: *const lesense::RegisterBlock = 0x4005_5000 as *const _;
340 #[doc = r"Return the pointer to the register block"]
341 #[inline(always)]
342 pub const fn ptr() -> *const lesense::RegisterBlock {
343 Self::PTR
344 }
345}
346impl Deref for LESENSE {
347 type Target = lesense::RegisterBlock;
348 #[inline(always)]
349 fn deref(&self) -> &Self::Target {
350 unsafe { &*Self::PTR }
351 }
352}
353impl core::fmt::Debug for LESENSE {
354 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
355 f.debug_struct("LESENSE").finish()
356 }
357}
358#[doc = "LESENSE"]
359pub mod lesense;
360#[doc = "GPIO"]
361pub struct GPIO {
362 _marker: PhantomData<*const ()>,
363}
364unsafe impl Send for GPIO {}
365impl GPIO {
366 #[doc = r"Pointer to the register block"]
367 pub const PTR: *const gpio::RegisterBlock = 0x4008_8000 as *const _;
368 #[doc = r"Return the pointer to the register block"]
369 #[inline(always)]
370 pub const fn ptr() -> *const gpio::RegisterBlock {
371 Self::PTR
372 }
373}
374impl Deref for GPIO {
375 type Target = gpio::RegisterBlock;
376 #[inline(always)]
377 fn deref(&self) -> &Self::Target {
378 unsafe { &*Self::PTR }
379 }
380}
381impl core::fmt::Debug for GPIO {
382 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
383 f.debug_struct("GPIO").finish()
384 }
385}
386#[doc = "GPIO"]
387pub mod gpio;
388#[doc = "PRS"]
389pub struct PRS {
390 _marker: PhantomData<*const ()>,
391}
392unsafe impl Send for PRS {}
393impl PRS {
394 #[doc = r"Pointer to the register block"]
395 pub const PTR: *const prs::RegisterBlock = 0x400e_6000 as *const _;
396 #[doc = r"Return the pointer to the register block"]
397 #[inline(always)]
398 pub const fn ptr() -> *const prs::RegisterBlock {
399 Self::PTR
400 }
401}
402impl Deref for PRS {
403 type Target = prs::RegisterBlock;
404 #[inline(always)]
405 fn deref(&self) -> &Self::Target {
406 unsafe { &*Self::PTR }
407 }
408}
409impl core::fmt::Debug for PRS {
410 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
411 f.debug_struct("PRS").finish()
412 }
413}
414#[doc = "PRS"]
415pub mod prs;
416#[doc = "LDMA"]
417pub struct LDMA {
418 _marker: PhantomData<*const ()>,
419}
420unsafe impl Send for LDMA {}
421impl LDMA {
422 #[doc = r"Pointer to the register block"]
423 pub const PTR: *const ldma::RegisterBlock = 0x4000_2000 as *const _;
424 #[doc = r"Return the pointer to the register block"]
425 #[inline(always)]
426 pub const fn ptr() -> *const ldma::RegisterBlock {
427 Self::PTR
428 }
429}
430impl Deref for LDMA {
431 type Target = ldma::RegisterBlock;
432 #[inline(always)]
433 fn deref(&self) -> &Self::Target {
434 unsafe { &*Self::PTR }
435 }
436}
437impl core::fmt::Debug for LDMA {
438 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
439 f.debug_struct("LDMA").finish()
440 }
441}
442#[doc = "LDMA"]
443pub mod ldma;
444#[doc = "GPCRC"]
445pub struct GPCRC {
446 _marker: PhantomData<*const ()>,
447}
448unsafe impl Send for GPCRC {}
449impl GPCRC {
450 #[doc = r"Pointer to the register block"]
451 pub const PTR: *const gpcrc::RegisterBlock = 0x4001_c000 as *const _;
452 #[doc = r"Return the pointer to the register block"]
453 #[inline(always)]
454 pub const fn ptr() -> *const gpcrc::RegisterBlock {
455 Self::PTR
456 }
457}
458impl Deref for GPCRC {
459 type Target = gpcrc::RegisterBlock;
460 #[inline(always)]
461 fn deref(&self) -> &Self::Target {
462 unsafe { &*Self::PTR }
463 }
464}
465impl core::fmt::Debug for GPCRC {
466 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
467 f.debug_struct("GPCRC").finish()
468 }
469}
470#[doc = "GPCRC"]
471pub mod gpcrc;
472#[doc = "CAN0"]
473pub struct CAN0 {
474 _marker: PhantomData<*const ()>,
475}
476unsafe impl Send for CAN0 {}
477impl CAN0 {
478 #[doc = r"Pointer to the register block"]
479 pub const PTR: *const can0::RegisterBlock = 0x4000_4000 as *const _;
480 #[doc = r"Return the pointer to the register block"]
481 #[inline(always)]
482 pub const fn ptr() -> *const can0::RegisterBlock {
483 Self::PTR
484 }
485}
486impl Deref for CAN0 {
487 type Target = can0::RegisterBlock;
488 #[inline(always)]
489 fn deref(&self) -> &Self::Target {
490 unsafe { &*Self::PTR }
491 }
492}
493impl core::fmt::Debug for CAN0 {
494 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
495 f.debug_struct("CAN0").finish()
496 }
497}
498#[doc = "CAN0"]
499pub mod can0;
500#[doc = "TIMER0"]
501pub struct TIMER0 {
502 _marker: PhantomData<*const ()>,
503}
504unsafe impl Send for TIMER0 {}
505impl TIMER0 {
506 #[doc = r"Pointer to the register block"]
507 pub const PTR: *const timer0::RegisterBlock = 0x4001_8000 as *const _;
508 #[doc = r"Return the pointer to the register block"]
509 #[inline(always)]
510 pub const fn ptr() -> *const timer0::RegisterBlock {
511 Self::PTR
512 }
513}
514impl Deref for TIMER0 {
515 type Target = timer0::RegisterBlock;
516 #[inline(always)]
517 fn deref(&self) -> &Self::Target {
518 unsafe { &*Self::PTR }
519 }
520}
521impl core::fmt::Debug for TIMER0 {
522 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
523 f.debug_struct("TIMER0").finish()
524 }
525}
526#[doc = "TIMER0"]
527pub mod timer0;
528#[doc = "TIMER1"]
529pub struct TIMER1 {
530 _marker: PhantomData<*const ()>,
531}
532unsafe impl Send for TIMER1 {}
533impl TIMER1 {
534 #[doc = r"Pointer to the register block"]
535 pub const PTR: *const timer1::RegisterBlock = 0x4001_8400 as *const _;
536 #[doc = r"Return the pointer to the register block"]
537 #[inline(always)]
538 pub const fn ptr() -> *const timer1::RegisterBlock {
539 Self::PTR
540 }
541}
542impl Deref for TIMER1 {
543 type Target = timer1::RegisterBlock;
544 #[inline(always)]
545 fn deref(&self) -> &Self::Target {
546 unsafe { &*Self::PTR }
547 }
548}
549impl core::fmt::Debug for TIMER1 {
550 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
551 f.debug_struct("TIMER1").finish()
552 }
553}
554#[doc = "TIMER1"]
555pub mod timer1;
556#[doc = "WTIMER0"]
557pub struct WTIMER0 {
558 _marker: PhantomData<*const ()>,
559}
560unsafe impl Send for WTIMER0 {}
561impl WTIMER0 {
562 #[doc = r"Pointer to the register block"]
563 pub const PTR: *const wtimer0::RegisterBlock = 0x4001_a000 as *const _;
564 #[doc = r"Return the pointer to the register block"]
565 #[inline(always)]
566 pub const fn ptr() -> *const wtimer0::RegisterBlock {
567 Self::PTR
568 }
569}
570impl Deref for WTIMER0 {
571 type Target = wtimer0::RegisterBlock;
572 #[inline(always)]
573 fn deref(&self) -> &Self::Target {
574 unsafe { &*Self::PTR }
575 }
576}
577impl core::fmt::Debug for WTIMER0 {
578 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
579 f.debug_struct("WTIMER0").finish()
580 }
581}
582#[doc = "WTIMER0"]
583pub mod wtimer0;
584#[doc = "WTIMER1"]
585pub struct WTIMER1 {
586 _marker: PhantomData<*const ()>,
587}
588unsafe impl Send for WTIMER1 {}
589impl WTIMER1 {
590 #[doc = r"Pointer to the register block"]
591 pub const PTR: *const wtimer1::RegisterBlock = 0x4001_a400 as *const _;
592 #[doc = r"Return the pointer to the register block"]
593 #[inline(always)]
594 pub const fn ptr() -> *const wtimer1::RegisterBlock {
595 Self::PTR
596 }
597}
598impl Deref for WTIMER1 {
599 type Target = wtimer1::RegisterBlock;
600 #[inline(always)]
601 fn deref(&self) -> &Self::Target {
602 unsafe { &*Self::PTR }
603 }
604}
605impl core::fmt::Debug for WTIMER1 {
606 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
607 f.debug_struct("WTIMER1").finish()
608 }
609}
610#[doc = "WTIMER1"]
611pub mod wtimer1;
612#[doc = "USART0"]
613pub struct USART0 {
614 _marker: PhantomData<*const ()>,
615}
616unsafe impl Send for USART0 {}
617impl USART0 {
618 #[doc = r"Pointer to the register block"]
619 pub const PTR: *const usart0::RegisterBlock = 0x4001_0000 as *const _;
620 #[doc = r"Return the pointer to the register block"]
621 #[inline(always)]
622 pub const fn ptr() -> *const usart0::RegisterBlock {
623 Self::PTR
624 }
625}
626impl Deref for USART0 {
627 type Target = usart0::RegisterBlock;
628 #[inline(always)]
629 fn deref(&self) -> &Self::Target {
630 unsafe { &*Self::PTR }
631 }
632}
633impl core::fmt::Debug for USART0 {
634 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
635 f.debug_struct("USART0").finish()
636 }
637}
638#[doc = "USART0"]
639pub mod usart0;
640#[doc = "USART1"]
641pub struct USART1 {
642 _marker: PhantomData<*const ()>,
643}
644unsafe impl Send for USART1 {}
645impl USART1 {
646 #[doc = r"Pointer to the register block"]
647 pub const PTR: *const usart1::RegisterBlock = 0x4001_0400 as *const _;
648 #[doc = r"Return the pointer to the register block"]
649 #[inline(always)]
650 pub const fn ptr() -> *const usart1::RegisterBlock {
651 Self::PTR
652 }
653}
654impl Deref for USART1 {
655 type Target = usart1::RegisterBlock;
656 #[inline(always)]
657 fn deref(&self) -> &Self::Target {
658 unsafe { &*Self::PTR }
659 }
660}
661impl core::fmt::Debug for USART1 {
662 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
663 f.debug_struct("USART1").finish()
664 }
665}
666#[doc = "USART1"]
667pub mod usart1;
668#[doc = "USART2"]
669pub struct USART2 {
670 _marker: PhantomData<*const ()>,
671}
672unsafe impl Send for USART2 {}
673impl USART2 {
674 #[doc = r"Pointer to the register block"]
675 pub const PTR: *const usart2::RegisterBlock = 0x4001_0800 as *const _;
676 #[doc = r"Return the pointer to the register block"]
677 #[inline(always)]
678 pub const fn ptr() -> *const usart2::RegisterBlock {
679 Self::PTR
680 }
681}
682impl Deref for USART2 {
683 type Target = usart2::RegisterBlock;
684 #[inline(always)]
685 fn deref(&self) -> &Self::Target {
686 unsafe { &*Self::PTR }
687 }
688}
689impl core::fmt::Debug for USART2 {
690 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
691 f.debug_struct("USART2").finish()
692 }
693}
694#[doc = "USART2"]
695pub mod usart2;
696#[doc = "USART3"]
697pub struct USART3 {
698 _marker: PhantomData<*const ()>,
699}
700unsafe impl Send for USART3 {}
701impl USART3 {
702 #[doc = r"Pointer to the register block"]
703 pub const PTR: *const usart3::RegisterBlock = 0x4001_0c00 as *const _;
704 #[doc = r"Return the pointer to the register block"]
705 #[inline(always)]
706 pub const fn ptr() -> *const usart3::RegisterBlock {
707 Self::PTR
708 }
709}
710impl Deref for USART3 {
711 type Target = usart3::RegisterBlock;
712 #[inline(always)]
713 fn deref(&self) -> &Self::Target {
714 unsafe { &*Self::PTR }
715 }
716}
717impl core::fmt::Debug for USART3 {
718 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
719 f.debug_struct("USART3").finish()
720 }
721}
722#[doc = "USART3"]
723pub mod usart3;
724#[doc = "UART0"]
725pub struct UART0 {
726 _marker: PhantomData<*const ()>,
727}
728unsafe impl Send for UART0 {}
729impl UART0 {
730 #[doc = r"Pointer to the register block"]
731 pub const PTR: *const uart0::RegisterBlock = 0x4001_4000 as *const _;
732 #[doc = r"Return the pointer to the register block"]
733 #[inline(always)]
734 pub const fn ptr() -> *const uart0::RegisterBlock {
735 Self::PTR
736 }
737}
738impl Deref for UART0 {
739 type Target = uart0::RegisterBlock;
740 #[inline(always)]
741 fn deref(&self) -> &Self::Target {
742 unsafe { &*Self::PTR }
743 }
744}
745impl core::fmt::Debug for UART0 {
746 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
747 f.debug_struct("UART0").finish()
748 }
749}
750#[doc = "UART0"]
751pub mod uart0;
752#[doc = "LEUART0"]
753pub struct LEUART0 {
754 _marker: PhantomData<*const ()>,
755}
756unsafe impl Send for LEUART0 {}
757impl LEUART0 {
758 #[doc = r"Pointer to the register block"]
759 pub const PTR: *const leuart0::RegisterBlock = 0x4006_a000 as *const _;
760 #[doc = r"Return the pointer to the register block"]
761 #[inline(always)]
762 pub const fn ptr() -> *const leuart0::RegisterBlock {
763 Self::PTR
764 }
765}
766impl Deref for LEUART0 {
767 type Target = leuart0::RegisterBlock;
768 #[inline(always)]
769 fn deref(&self) -> &Self::Target {
770 unsafe { &*Self::PTR }
771 }
772}
773impl core::fmt::Debug for LEUART0 {
774 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
775 f.debug_struct("LEUART0").finish()
776 }
777}
778#[doc = "LEUART0"]
779pub mod leuart0;
780#[doc = "LETIMER0"]
781pub struct LETIMER0 {
782 _marker: PhantomData<*const ()>,
783}
784unsafe impl Send for LETIMER0 {}
785impl LETIMER0 {
786 #[doc = r"Pointer to the register block"]
787 pub const PTR: *const letimer0::RegisterBlock = 0x4006_6000 as *const _;
788 #[doc = r"Return the pointer to the register block"]
789 #[inline(always)]
790 pub const fn ptr() -> *const letimer0::RegisterBlock {
791 Self::PTR
792 }
793}
794impl Deref for LETIMER0 {
795 type Target = letimer0::RegisterBlock;
796 #[inline(always)]
797 fn deref(&self) -> &Self::Target {
798 unsafe { &*Self::PTR }
799 }
800}
801impl core::fmt::Debug for LETIMER0 {
802 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
803 f.debug_struct("LETIMER0").finish()
804 }
805}
806#[doc = "LETIMER0"]
807pub mod letimer0;
808#[doc = "CRYOTIMER"]
809pub struct CRYOTIMER {
810 _marker: PhantomData<*const ()>,
811}
812unsafe impl Send for CRYOTIMER {}
813impl CRYOTIMER {
814 #[doc = r"Pointer to the register block"]
815 pub const PTR: *const cryotimer::RegisterBlock = 0x4008_f000 as *const _;
816 #[doc = r"Return the pointer to the register block"]
817 #[inline(always)]
818 pub const fn ptr() -> *const cryotimer::RegisterBlock {
819 Self::PTR
820 }
821}
822impl Deref for CRYOTIMER {
823 type Target = cryotimer::RegisterBlock;
824 #[inline(always)]
825 fn deref(&self) -> &Self::Target {
826 unsafe { &*Self::PTR }
827 }
828}
829impl core::fmt::Debug for CRYOTIMER {
830 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
831 f.debug_struct("CRYOTIMER").finish()
832 }
833}
834#[doc = "CRYOTIMER"]
835pub mod cryotimer;
836#[doc = "PCNT0"]
837pub struct PCNT0 {
838 _marker: PhantomData<*const ()>,
839}
840unsafe impl Send for PCNT0 {}
841impl PCNT0 {
842 #[doc = r"Pointer to the register block"]
843 pub const PTR: *const pcnt0::RegisterBlock = 0x4006_e000 as *const _;
844 #[doc = r"Return the pointer to the register block"]
845 #[inline(always)]
846 pub const fn ptr() -> *const pcnt0::RegisterBlock {
847 Self::PTR
848 }
849}
850impl Deref for PCNT0 {
851 type Target = pcnt0::RegisterBlock;
852 #[inline(always)]
853 fn deref(&self) -> &Self::Target {
854 unsafe { &*Self::PTR }
855 }
856}
857impl core::fmt::Debug for PCNT0 {
858 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
859 f.debug_struct("PCNT0").finish()
860 }
861}
862#[doc = "PCNT0"]
863pub mod pcnt0;
864#[doc = "I2C0"]
865pub struct I2C0 {
866 _marker: PhantomData<*const ()>,
867}
868unsafe impl Send for I2C0 {}
869impl I2C0 {
870 #[doc = r"Pointer to the register block"]
871 pub const PTR: *const i2c0::RegisterBlock = 0x4008_9000 as *const _;
872 #[doc = r"Return the pointer to the register block"]
873 #[inline(always)]
874 pub const fn ptr() -> *const i2c0::RegisterBlock {
875 Self::PTR
876 }
877}
878impl Deref for I2C0 {
879 type Target = i2c0::RegisterBlock;
880 #[inline(always)]
881 fn deref(&self) -> &Self::Target {
882 unsafe { &*Self::PTR }
883 }
884}
885impl core::fmt::Debug for I2C0 {
886 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
887 f.debug_struct("I2C0").finish()
888 }
889}
890#[doc = "I2C0"]
891pub mod i2c0;
892#[doc = "I2C1"]
893pub struct I2C1 {
894 _marker: PhantomData<*const ()>,
895}
896unsafe impl Send for I2C1 {}
897impl I2C1 {
898 #[doc = r"Pointer to the register block"]
899 pub const PTR: *const i2c1::RegisterBlock = 0x4008_9400 as *const _;
900 #[doc = r"Return the pointer to the register block"]
901 #[inline(always)]
902 pub const fn ptr() -> *const i2c1::RegisterBlock {
903 Self::PTR
904 }
905}
906impl Deref for I2C1 {
907 type Target = i2c1::RegisterBlock;
908 #[inline(always)]
909 fn deref(&self) -> &Self::Target {
910 unsafe { &*Self::PTR }
911 }
912}
913impl core::fmt::Debug for I2C1 {
914 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
915 f.debug_struct("I2C1").finish()
916 }
917}
918#[doc = "I2C1"]
919pub mod i2c1;
920#[doc = "ADC0"]
921pub struct ADC0 {
922 _marker: PhantomData<*const ()>,
923}
924unsafe impl Send for ADC0 {}
925impl ADC0 {
926 #[doc = r"Pointer to the register block"]
927 pub const PTR: *const adc0::RegisterBlock = 0x4008_2000 as *const _;
928 #[doc = r"Return the pointer to the register block"]
929 #[inline(always)]
930 pub const fn ptr() -> *const adc0::RegisterBlock {
931 Self::PTR
932 }
933}
934impl Deref for ADC0 {
935 type Target = adc0::RegisterBlock;
936 #[inline(always)]
937 fn deref(&self) -> &Self::Target {
938 unsafe { &*Self::PTR }
939 }
940}
941impl core::fmt::Debug for ADC0 {
942 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
943 f.debug_struct("ADC0").finish()
944 }
945}
946#[doc = "ADC0"]
947pub mod adc0;
948#[doc = "ACMP0"]
949pub struct ACMP0 {
950 _marker: PhantomData<*const ()>,
951}
952unsafe impl Send for ACMP0 {}
953impl ACMP0 {
954 #[doc = r"Pointer to the register block"]
955 pub const PTR: *const acmp0::RegisterBlock = 0x4008_0000 as *const _;
956 #[doc = r"Return the pointer to the register block"]
957 #[inline(always)]
958 pub const fn ptr() -> *const acmp0::RegisterBlock {
959 Self::PTR
960 }
961}
962impl Deref for ACMP0 {
963 type Target = acmp0::RegisterBlock;
964 #[inline(always)]
965 fn deref(&self) -> &Self::Target {
966 unsafe { &*Self::PTR }
967 }
968}
969impl core::fmt::Debug for ACMP0 {
970 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
971 f.debug_struct("ACMP0").finish()
972 }
973}
974#[doc = "ACMP0"]
975pub mod acmp0;
976#[doc = "ACMP1"]
977pub struct ACMP1 {
978 _marker: PhantomData<*const ()>,
979}
980unsafe impl Send for ACMP1 {}
981impl ACMP1 {
982 #[doc = r"Pointer to the register block"]
983 pub const PTR: *const acmp1::RegisterBlock = 0x4008_0400 as *const _;
984 #[doc = r"Return the pointer to the register block"]
985 #[inline(always)]
986 pub const fn ptr() -> *const acmp1::RegisterBlock {
987 Self::PTR
988 }
989}
990impl Deref for ACMP1 {
991 type Target = acmp1::RegisterBlock;
992 #[inline(always)]
993 fn deref(&self) -> &Self::Target {
994 unsafe { &*Self::PTR }
995 }
996}
997impl core::fmt::Debug for ACMP1 {
998 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
999 f.debug_struct("ACMP1").finish()
1000 }
1001}
1002#[doc = "ACMP1"]
1003pub mod acmp1;
1004#[doc = "VDAC0"]
1005pub struct VDAC0 {
1006 _marker: PhantomData<*const ()>,
1007}
1008unsafe impl Send for VDAC0 {}
1009impl VDAC0 {
1010 #[doc = r"Pointer to the register block"]
1011 pub const PTR: *const vdac0::RegisterBlock = 0x4008_6000 as *const _;
1012 #[doc = r"Return the pointer to the register block"]
1013 #[inline(always)]
1014 pub const fn ptr() -> *const vdac0::RegisterBlock {
1015 Self::PTR
1016 }
1017}
1018impl Deref for VDAC0 {
1019 type Target = vdac0::RegisterBlock;
1020 #[inline(always)]
1021 fn deref(&self) -> &Self::Target {
1022 unsafe { &*Self::PTR }
1023 }
1024}
1025impl core::fmt::Debug for VDAC0 {
1026 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1027 f.debug_struct("VDAC0").finish()
1028 }
1029}
1030#[doc = "VDAC0"]
1031pub mod vdac0;
1032#[doc = "CSEN"]
1033pub struct CSEN {
1034 _marker: PhantomData<*const ()>,
1035}
1036unsafe impl Send for CSEN {}
1037impl CSEN {
1038 #[doc = r"Pointer to the register block"]
1039 pub const PTR: *const csen::RegisterBlock = 0x4008_e000 as *const _;
1040 #[doc = r"Return the pointer to the register block"]
1041 #[inline(always)]
1042 pub const fn ptr() -> *const csen::RegisterBlock {
1043 Self::PTR
1044 }
1045}
1046impl Deref for CSEN {
1047 type Target = csen::RegisterBlock;
1048 #[inline(always)]
1049 fn deref(&self) -> &Self::Target {
1050 unsafe { &*Self::PTR }
1051 }
1052}
1053impl core::fmt::Debug for CSEN {
1054 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1055 f.debug_struct("CSEN").finish()
1056 }
1057}
1058#[doc = "CSEN"]
1059pub mod csen;
1060#[doc = "LCD"]
1061pub struct LCD {
1062 _marker: PhantomData<*const ()>,
1063}
1064unsafe impl Send for LCD {}
1065impl LCD {
1066 #[doc = r"Pointer to the register block"]
1067 pub const PTR: *const lcd::RegisterBlock = 0x4005_4000 as *const _;
1068 #[doc = r"Return the pointer to the register block"]
1069 #[inline(always)]
1070 pub const fn ptr() -> *const lcd::RegisterBlock {
1071 Self::PTR
1072 }
1073}
1074impl Deref for LCD {
1075 type Target = lcd::RegisterBlock;
1076 #[inline(always)]
1077 fn deref(&self) -> &Self::Target {
1078 unsafe { &*Self::PTR }
1079 }
1080}
1081impl core::fmt::Debug for LCD {
1082 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1083 f.debug_struct("LCD").finish()
1084 }
1085}
1086#[doc = "LCD"]
1087pub mod lcd;
1088#[doc = "RTCC"]
1089pub struct RTCC {
1090 _marker: PhantomData<*const ()>,
1091}
1092unsafe impl Send for RTCC {}
1093impl RTCC {
1094 #[doc = r"Pointer to the register block"]
1095 pub const PTR: *const rtcc::RegisterBlock = 0x4006_2000 as *const _;
1096 #[doc = r"Return the pointer to the register block"]
1097 #[inline(always)]
1098 pub const fn ptr() -> *const rtcc::RegisterBlock {
1099 Self::PTR
1100 }
1101}
1102impl Deref for RTCC {
1103 type Target = rtcc::RegisterBlock;
1104 #[inline(always)]
1105 fn deref(&self) -> &Self::Target {
1106 unsafe { &*Self::PTR }
1107 }
1108}
1109impl core::fmt::Debug for RTCC {
1110 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1111 f.debug_struct("RTCC").finish()
1112 }
1113}
1114#[doc = "RTCC"]
1115pub mod rtcc;
1116#[doc = "WDOG0"]
1117pub struct WDOG0 {
1118 _marker: PhantomData<*const ()>,
1119}
1120unsafe impl Send for WDOG0 {}
1121impl WDOG0 {
1122 #[doc = r"Pointer to the register block"]
1123 pub const PTR: *const wdog0::RegisterBlock = 0x4005_2000 as *const _;
1124 #[doc = r"Return the pointer to the register block"]
1125 #[inline(always)]
1126 pub const fn ptr() -> *const wdog0::RegisterBlock {
1127 Self::PTR
1128 }
1129}
1130impl Deref for WDOG0 {
1131 type Target = wdog0::RegisterBlock;
1132 #[inline(always)]
1133 fn deref(&self) -> &Self::Target {
1134 unsafe { &*Self::PTR }
1135 }
1136}
1137impl core::fmt::Debug for WDOG0 {
1138 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1139 f.debug_struct("WDOG0").finish()
1140 }
1141}
1142#[doc = "WDOG0"]
1143pub mod wdog0;
1144#[doc = "SMU"]
1145pub struct SMU {
1146 _marker: PhantomData<*const ()>,
1147}
1148unsafe impl Send for SMU {}
1149impl SMU {
1150 #[doc = r"Pointer to the register block"]
1151 pub const PTR: *const smu::RegisterBlock = 0x4002_0000 as *const _;
1152 #[doc = r"Return the pointer to the register block"]
1153 #[inline(always)]
1154 pub const fn ptr() -> *const smu::RegisterBlock {
1155 Self::PTR
1156 }
1157}
1158impl Deref for SMU {
1159 type Target = smu::RegisterBlock;
1160 #[inline(always)]
1161 fn deref(&self) -> &Self::Target {
1162 unsafe { &*Self::PTR }
1163 }
1164}
1165impl core::fmt::Debug for SMU {
1166 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1167 f.debug_struct("SMU").finish()
1168 }
1169}
1170#[doc = "SMU"]
1171pub mod smu;
1172#[doc = "TRNG0"]
1173pub struct TRNG0 {
1174 _marker: PhantomData<*const ()>,
1175}
1176unsafe impl Send for TRNG0 {}
1177impl TRNG0 {
1178 #[doc = r"Pointer to the register block"]
1179 pub const PTR: *const trng0::RegisterBlock = 0x4001_d000 as *const _;
1180 #[doc = r"Return the pointer to the register block"]
1181 #[inline(always)]
1182 pub const fn ptr() -> *const trng0::RegisterBlock {
1183 Self::PTR
1184 }
1185}
1186impl Deref for TRNG0 {
1187 type Target = trng0::RegisterBlock;
1188 #[inline(always)]
1189 fn deref(&self) -> &Self::Target {
1190 unsafe { &*Self::PTR }
1191 }
1192}
1193impl core::fmt::Debug for TRNG0 {
1194 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1195 f.debug_struct("TRNG0").finish()
1196 }
1197}
1198#[doc = "TRNG0"]
1199pub mod trng0;
1200#[doc = "MTB"]
1201pub struct MTB {
1202 _marker: PhantomData<*const ()>,
1203}
1204unsafe impl Send for MTB {}
1205impl MTB {
1206 #[doc = r"Pointer to the register block"]
1207 pub const PTR: *const mtb::RegisterBlock = 0xf004_0000 as *const _;
1208 #[doc = r"Return the pointer to the register block"]
1209 #[inline(always)]
1210 pub const fn ptr() -> *const mtb::RegisterBlock {
1211 Self::PTR
1212 }
1213}
1214impl Deref for MTB {
1215 type Target = mtb::RegisterBlock;
1216 #[inline(always)]
1217 fn deref(&self) -> &Self::Target {
1218 unsafe { &*Self::PTR }
1219 }
1220}
1221impl core::fmt::Debug for MTB {
1222 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1223 f.debug_struct("MTB").finish()
1224 }
1225}
1226#[doc = "MTB"]
1227pub mod mtb;
1228#[no_mangle]
1229static mut DEVICE_PERIPHERALS: bool = false;
1230#[doc = r"All the peripherals"]
1231#[allow(non_snake_case)]
1232pub struct Peripherals {
1233 #[doc = "MSC"]
1234 pub MSC: MSC,
1235 #[doc = "EMU"]
1236 pub EMU: EMU,
1237 #[doc = "RMU"]
1238 pub RMU: RMU,
1239 #[doc = "CMU"]
1240 pub CMU: CMU,
1241 #[doc = "CRYPTO0"]
1242 pub CRYPTO0: CRYPTO0,
1243 #[doc = "LESENSE"]
1244 pub LESENSE: LESENSE,
1245 #[doc = "GPIO"]
1246 pub GPIO: GPIO,
1247 #[doc = "PRS"]
1248 pub PRS: PRS,
1249 #[doc = "LDMA"]
1250 pub LDMA: LDMA,
1251 #[doc = "GPCRC"]
1252 pub GPCRC: GPCRC,
1253 #[doc = "CAN0"]
1254 pub CAN0: CAN0,
1255 #[doc = "TIMER0"]
1256 pub TIMER0: TIMER0,
1257 #[doc = "TIMER1"]
1258 pub TIMER1: TIMER1,
1259 #[doc = "WTIMER0"]
1260 pub WTIMER0: WTIMER0,
1261 #[doc = "WTIMER1"]
1262 pub WTIMER1: WTIMER1,
1263 #[doc = "USART0"]
1264 pub USART0: USART0,
1265 #[doc = "USART1"]
1266 pub USART1: USART1,
1267 #[doc = "USART2"]
1268 pub USART2: USART2,
1269 #[doc = "USART3"]
1270 pub USART3: USART3,
1271 #[doc = "UART0"]
1272 pub UART0: UART0,
1273 #[doc = "LEUART0"]
1274 pub LEUART0: LEUART0,
1275 #[doc = "LETIMER0"]
1276 pub LETIMER0: LETIMER0,
1277 #[doc = "CRYOTIMER"]
1278 pub CRYOTIMER: CRYOTIMER,
1279 #[doc = "PCNT0"]
1280 pub PCNT0: PCNT0,
1281 #[doc = "I2C0"]
1282 pub I2C0: I2C0,
1283 #[doc = "I2C1"]
1284 pub I2C1: I2C1,
1285 #[doc = "ADC0"]
1286 pub ADC0: ADC0,
1287 #[doc = "ACMP0"]
1288 pub ACMP0: ACMP0,
1289 #[doc = "ACMP1"]
1290 pub ACMP1: ACMP1,
1291 #[doc = "VDAC0"]
1292 pub VDAC0: VDAC0,
1293 #[doc = "CSEN"]
1294 pub CSEN: CSEN,
1295 #[doc = "LCD"]
1296 pub LCD: LCD,
1297 #[doc = "RTCC"]
1298 pub RTCC: RTCC,
1299 #[doc = "WDOG0"]
1300 pub WDOG0: WDOG0,
1301 #[doc = "SMU"]
1302 pub SMU: SMU,
1303 #[doc = "TRNG0"]
1304 pub TRNG0: TRNG0,
1305 #[doc = "MTB"]
1306 pub MTB: MTB,
1307}
1308impl Peripherals {
1309 #[doc = r"Returns all the peripherals *once*"]
1310 #[inline]
1311 pub fn take() -> Option<Self> {
1312 cortex_m::interrupt::free(|_| {
1313 if unsafe { DEVICE_PERIPHERALS } {
1314 None
1315 } else {
1316 Some(unsafe { Peripherals::steal() })
1317 }
1318 })
1319 }
1320 #[doc = r"Unchecked version of `Peripherals::take`"]
1321 #[inline]
1322 pub unsafe fn steal() -> Self {
1323 DEVICE_PERIPHERALS = true;
1324 Peripherals {
1325 MSC: MSC {
1326 _marker: PhantomData,
1327 },
1328 EMU: EMU {
1329 _marker: PhantomData,
1330 },
1331 RMU: RMU {
1332 _marker: PhantomData,
1333 },
1334 CMU: CMU {
1335 _marker: PhantomData,
1336 },
1337 CRYPTO0: CRYPTO0 {
1338 _marker: PhantomData,
1339 },
1340 LESENSE: LESENSE {
1341 _marker: PhantomData,
1342 },
1343 GPIO: GPIO {
1344 _marker: PhantomData,
1345 },
1346 PRS: PRS {
1347 _marker: PhantomData,
1348 },
1349 LDMA: LDMA {
1350 _marker: PhantomData,
1351 },
1352 GPCRC: GPCRC {
1353 _marker: PhantomData,
1354 },
1355 CAN0: CAN0 {
1356 _marker: PhantomData,
1357 },
1358 TIMER0: TIMER0 {
1359 _marker: PhantomData,
1360 },
1361 TIMER1: TIMER1 {
1362 _marker: PhantomData,
1363 },
1364 WTIMER0: WTIMER0 {
1365 _marker: PhantomData,
1366 },
1367 WTIMER1: WTIMER1 {
1368 _marker: PhantomData,
1369 },
1370 USART0: USART0 {
1371 _marker: PhantomData,
1372 },
1373 USART1: USART1 {
1374 _marker: PhantomData,
1375 },
1376 USART2: USART2 {
1377 _marker: PhantomData,
1378 },
1379 USART3: USART3 {
1380 _marker: PhantomData,
1381 },
1382 UART0: UART0 {
1383 _marker: PhantomData,
1384 },
1385 LEUART0: LEUART0 {
1386 _marker: PhantomData,
1387 },
1388 LETIMER0: LETIMER0 {
1389 _marker: PhantomData,
1390 },
1391 CRYOTIMER: CRYOTIMER {
1392 _marker: PhantomData,
1393 },
1394 PCNT0: PCNT0 {
1395 _marker: PhantomData,
1396 },
1397 I2C0: I2C0 {
1398 _marker: PhantomData,
1399 },
1400 I2C1: I2C1 {
1401 _marker: PhantomData,
1402 },
1403 ADC0: ADC0 {
1404 _marker: PhantomData,
1405 },
1406 ACMP0: ACMP0 {
1407 _marker: PhantomData,
1408 },
1409 ACMP1: ACMP1 {
1410 _marker: PhantomData,
1411 },
1412 VDAC0: VDAC0 {
1413 _marker: PhantomData,
1414 },
1415 CSEN: CSEN {
1416 _marker: PhantomData,
1417 },
1418 LCD: LCD {
1419 _marker: PhantomData,
1420 },
1421 RTCC: RTCC {
1422 _marker: PhantomData,
1423 },
1424 WDOG0: WDOG0 {
1425 _marker: PhantomData,
1426 },
1427 SMU: SMU {
1428 _marker: PhantomData,
1429 },
1430 TRNG0: TRNG0 {
1431 _marker: PhantomData,
1432 },
1433 MTB: MTB {
1434 _marker: PhantomData,
1435 },
1436 }
1437 }
1438}