efm32tg11b340_pac/
lib.rs

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}