1pub const NVIC_PRIO_BITS: u8 = 4;
12#[cfg(feature = "rt")]
13pub use self::Interrupt as interrupt;
14pub use cortex_m::peripheral::Peripherals as CorePeripherals;
15pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, FPU, ITM, MPU, NVIC, SCB, SYST, TPIU};
16#[cfg(feature = "rt")]
17pub use cortex_m_rt::interrupt;
18#[cfg(feature = "rt")]
19extern "C" {
20 fn WWDG();
21 fn PVD();
22 fn TAMP_STAMP();
23 fn RTC_WKUP();
24 fn FLASH();
25 fn RCC();
26 fn EXTI0();
27 fn EXTI1();
28 fn EXTI2();
29 fn EXTI3();
30 fn EXTI4();
31 fn DMA1_STREAM0();
32 fn DMA1_STREAM1();
33 fn DMA1_STREAM2();
34 fn DMA1_STREAM3();
35 fn DMA1_STREAM4();
36 fn DMA1_STREAM5();
37 fn DMA1_STREAM6();
38 fn ADC();
39 fn CAN1_TX();
40 fn CAN1_RX0();
41 fn CAN1_RX1();
42 fn CAN1_SCE();
43 fn EXTI9_5();
44 fn TIM1_BRK_TIM9();
45 fn TIM1_UP_TIM10();
46 fn TIM1_TRG_COM_TIM11();
47 fn TIM1_CC();
48 fn TIM2();
49 fn TIM3();
50 fn TIM4();
51 fn I2C1_EV();
52 fn I2C1_ER();
53 fn I2C2_EV();
54 fn I2C2_ER();
55 fn SPI1();
56 fn SPI2();
57 fn USART1();
58 fn USART2();
59 fn USART3();
60 fn EXTI15_10();
61 fn RTC_ALARM();
62 fn OTG_FS_WKUP();
63 fn TIM8_BRK_TIM12();
64 fn TIM8_UP_TIM13();
65 fn TIM8_TRG_COM_TIM14();
66 fn TIM8_CC();
67 fn DMA1_STREAM7();
68 fn FMC();
69 fn SDIO();
70 fn TIM5();
71 fn SPI3();
72 fn UART4();
73 fn UART5();
74 fn TIM6_DAC();
75 fn TIM7();
76 fn DMA2_STREAM0();
77 fn DMA2_STREAM1();
78 fn DMA2_STREAM2();
79 fn DMA2_STREAM3();
80 fn DMA2_STREAM4();
81 fn ETH();
82 fn ETH_WKUP();
83 fn CAN2_TX();
84 fn CAN2_RX0();
85 fn CAN2_RX1();
86 fn CAN2_SCE();
87 fn OTG_FS();
88 fn DMA2_STREAM5();
89 fn DMA2_STREAM6();
90 fn DMA2_STREAM7();
91 fn USART6();
92 fn I2C3_EV();
93 fn I2C3_ER();
94 fn OTG_HS_EP1_OUT();
95 fn OTG_HS_EP1_IN();
96 fn OTG_HS_WKUP();
97 fn OTG_HS();
98 fn DCMI();
99 fn CRYP();
100 fn HASH_RNG();
101 fn FPU();
102 fn UART7();
103 fn UART8();
104 fn SPI4();
105 fn SPI5();
106 fn SPI6();
107 fn SAI1();
108 fn LCD_TFT();
109 fn LCD_TFT_1();
110 fn DMA2D();
111 fn QUADSPI();
112 fn DSIHOST();
113}
114#[doc(hidden)]
115#[repr(C)]
116pub union Vector {
117 _handler: unsafe extern "C" fn(),
118 _reserved: u32,
119}
120#[cfg(feature = "rt")]
121#[doc(hidden)]
122#[link_section = ".vector_table.interrupts"]
123#[no_mangle]
124pub static __INTERRUPTS: [Vector; 93] = [
125 Vector { _handler: WWDG },
126 Vector { _handler: PVD },
127 Vector {
128 _handler: TAMP_STAMP,
129 },
130 Vector { _handler: RTC_WKUP },
131 Vector { _handler: FLASH },
132 Vector { _handler: RCC },
133 Vector { _handler: EXTI0 },
134 Vector { _handler: EXTI1 },
135 Vector { _handler: EXTI2 },
136 Vector { _handler: EXTI3 },
137 Vector { _handler: EXTI4 },
138 Vector {
139 _handler: DMA1_STREAM0,
140 },
141 Vector {
142 _handler: DMA1_STREAM1,
143 },
144 Vector {
145 _handler: DMA1_STREAM2,
146 },
147 Vector {
148 _handler: DMA1_STREAM3,
149 },
150 Vector {
151 _handler: DMA1_STREAM4,
152 },
153 Vector {
154 _handler: DMA1_STREAM5,
155 },
156 Vector {
157 _handler: DMA1_STREAM6,
158 },
159 Vector { _handler: ADC },
160 Vector { _handler: CAN1_TX },
161 Vector { _handler: CAN1_RX0 },
162 Vector { _handler: CAN1_RX1 },
163 Vector { _handler: CAN1_SCE },
164 Vector { _handler: EXTI9_5 },
165 Vector {
166 _handler: TIM1_BRK_TIM9,
167 },
168 Vector {
169 _handler: TIM1_UP_TIM10,
170 },
171 Vector {
172 _handler: TIM1_TRG_COM_TIM11,
173 },
174 Vector { _handler: TIM1_CC },
175 Vector { _handler: TIM2 },
176 Vector { _handler: TIM3 },
177 Vector { _handler: TIM4 },
178 Vector { _handler: I2C1_EV },
179 Vector { _handler: I2C1_ER },
180 Vector { _handler: I2C2_EV },
181 Vector { _handler: I2C2_ER },
182 Vector { _handler: SPI1 },
183 Vector { _handler: SPI2 },
184 Vector { _handler: USART1 },
185 Vector { _handler: USART2 },
186 Vector { _handler: USART3 },
187 Vector {
188 _handler: EXTI15_10,
189 },
190 Vector {
191 _handler: RTC_ALARM,
192 },
193 Vector {
194 _handler: OTG_FS_WKUP,
195 },
196 Vector {
197 _handler: TIM8_BRK_TIM12,
198 },
199 Vector {
200 _handler: TIM8_UP_TIM13,
201 },
202 Vector {
203 _handler: TIM8_TRG_COM_TIM14,
204 },
205 Vector { _handler: TIM8_CC },
206 Vector {
207 _handler: DMA1_STREAM7,
208 },
209 Vector { _handler: FMC },
210 Vector { _handler: SDIO },
211 Vector { _handler: TIM5 },
212 Vector { _handler: SPI3 },
213 Vector { _handler: UART4 },
214 Vector { _handler: UART5 },
215 Vector { _handler: TIM6_DAC },
216 Vector { _handler: TIM7 },
217 Vector {
218 _handler: DMA2_STREAM0,
219 },
220 Vector {
221 _handler: DMA2_STREAM1,
222 },
223 Vector {
224 _handler: DMA2_STREAM2,
225 },
226 Vector {
227 _handler: DMA2_STREAM3,
228 },
229 Vector {
230 _handler: DMA2_STREAM4,
231 },
232 Vector { _handler: ETH },
233 Vector { _handler: ETH_WKUP },
234 Vector { _handler: CAN2_TX },
235 Vector { _handler: CAN2_RX0 },
236 Vector { _handler: CAN2_RX1 },
237 Vector { _handler: CAN2_SCE },
238 Vector { _handler: OTG_FS },
239 Vector {
240 _handler: DMA2_STREAM5,
241 },
242 Vector {
243 _handler: DMA2_STREAM6,
244 },
245 Vector {
246 _handler: DMA2_STREAM7,
247 },
248 Vector { _handler: USART6 },
249 Vector { _handler: I2C3_EV },
250 Vector { _handler: I2C3_ER },
251 Vector {
252 _handler: OTG_HS_EP1_OUT,
253 },
254 Vector {
255 _handler: OTG_HS_EP1_IN,
256 },
257 Vector {
258 _handler: OTG_HS_WKUP,
259 },
260 Vector { _handler: OTG_HS },
261 Vector { _handler: DCMI },
262 Vector { _handler: CRYP },
263 Vector { _handler: HASH_RNG },
264 Vector { _handler: FPU },
265 Vector { _handler: UART7 },
266 Vector { _handler: UART8 },
267 Vector { _handler: SPI4 },
268 Vector { _handler: SPI5 },
269 Vector { _handler: SPI6 },
270 Vector { _handler: SAI1 },
271 Vector { _handler: LCD_TFT },
272 Vector {
273 _handler: LCD_TFT_1,
274 },
275 Vector { _handler: DMA2D },
276 Vector { _handler: QUADSPI },
277 Vector { _handler: DSIHOST },
278];
279#[cfg_attr(feature = "defmt", derive(defmt::Format))]
281#[derive(Copy, Clone, Debug, PartialEq, Eq)]
282#[repr(u16)]
283pub enum Interrupt {
284 WWDG = 0,
286 PVD = 1,
288 TAMP_STAMP = 2,
290 RTC_WKUP = 3,
292 FLASH = 4,
294 RCC = 5,
296 EXTI0 = 6,
298 EXTI1 = 7,
300 EXTI2 = 8,
302 EXTI3 = 9,
304 EXTI4 = 10,
306 DMA1_STREAM0 = 11,
308 DMA1_STREAM1 = 12,
310 DMA1_STREAM2 = 13,
312 DMA1_STREAM3 = 14,
314 DMA1_STREAM4 = 15,
316 DMA1_STREAM5 = 16,
318 DMA1_STREAM6 = 17,
320 ADC = 18,
322 CAN1_TX = 19,
324 CAN1_RX0 = 20,
326 CAN1_RX1 = 21,
328 CAN1_SCE = 22,
330 EXTI9_5 = 23,
332 TIM1_BRK_TIM9 = 24,
334 TIM1_UP_TIM10 = 25,
336 TIM1_TRG_COM_TIM11 = 26,
338 TIM1_CC = 27,
340 TIM2 = 28,
342 TIM3 = 29,
344 TIM4 = 30,
346 I2C1_EV = 31,
348 I2C1_ER = 32,
350 I2C2_EV = 33,
352 I2C2_ER = 34,
354 SPI1 = 35,
356 SPI2 = 36,
358 USART1 = 37,
360 USART2 = 38,
362 USART3 = 39,
364 EXTI15_10 = 40,
366 RTC_ALARM = 41,
368 OTG_FS_WKUP = 42,
370 TIM8_BRK_TIM12 = 43,
372 TIM8_UP_TIM13 = 44,
374 TIM8_TRG_COM_TIM14 = 45,
376 TIM8_CC = 46,
378 DMA1_STREAM7 = 47,
380 FMC = 48,
382 SDIO = 49,
384 TIM5 = 50,
386 SPI3 = 51,
388 UART4 = 52,
390 UART5 = 53,
392 TIM6_DAC = 54,
394 TIM7 = 55,
396 DMA2_STREAM0 = 56,
398 DMA2_STREAM1 = 57,
400 DMA2_STREAM2 = 58,
402 DMA2_STREAM3 = 59,
404 DMA2_STREAM4 = 60,
406 ETH = 61,
408 ETH_WKUP = 62,
410 CAN2_TX = 63,
412 CAN2_RX0 = 64,
414 CAN2_RX1 = 65,
416 CAN2_SCE = 66,
418 OTG_FS = 67,
420 DMA2_STREAM5 = 68,
422 DMA2_STREAM6 = 69,
424 DMA2_STREAM7 = 70,
426 USART6 = 71,
428 I2C3_EV = 72,
430 I2C3_ER = 73,
432 OTG_HS_EP1_OUT = 74,
434 OTG_HS_EP1_IN = 75,
436 OTG_HS_WKUP = 76,
438 OTG_HS = 77,
440 DCMI = 78,
442 CRYP = 79,
444 HASH_RNG = 80,
446 FPU = 81,
448 UART7 = 82,
450 UART8 = 83,
452 SPI4 = 84,
454 SPI5 = 85,
456 SPI6 = 86,
458 SAI1 = 87,
460 LCD_TFT = 88,
462 LCD_TFT_1 = 89,
464 DMA2D = 90,
466 QUADSPI = 91,
468 DSIHOST = 92,
470}
471unsafe impl cortex_m::interrupt::InterruptNumber for Interrupt {
472 #[inline(always)]
473 fn number(self) -> u16 {
474 self as u16
475 }
476}
477pub type RNG = crate::Periph<rng::RegisterBlock, 0x5006_0800>;
481impl core::fmt::Debug for RNG {
482 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
483 f.debug_struct("RNG").finish()
484 }
485}
486pub mod rng;
488pub type HASH = crate::Periph<hash::RegisterBlock, 0x5006_0400>;
492impl core::fmt::Debug for HASH {
493 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
494 f.debug_struct("HASH").finish()
495 }
496}
497pub mod hash;
499pub type CRYP = crate::Periph<cryp::RegisterBlock, 0x5006_0000>;
503impl core::fmt::Debug for CRYP {
504 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
505 f.debug_struct("CRYP").finish()
506 }
507}
508pub mod cryp;
510pub type DCMI = crate::Periph<dcmi::RegisterBlock, 0x5005_0000>;
514impl core::fmt::Debug for DCMI {
515 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
516 f.debug_struct("DCMI").finish()
517 }
518}
519pub mod dcmi;
521pub type FMC = crate::Periph<fmc::RegisterBlock, 0xa000_0000>;
525impl core::fmt::Debug for FMC {
526 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
527 f.debug_struct("FMC").finish()
528 }
529}
530pub mod fmc;
532pub type DBGMCU = crate::Periph<dbgmcu::RegisterBlock, 0xe004_2000>;
536impl core::fmt::Debug for DBGMCU {
537 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
538 f.debug_struct("DBGMCU").finish()
539 }
540}
541pub mod dbgmcu;
543pub type DMA2 = crate::Periph<dma2::RegisterBlock, 0x4002_6400>;
547impl core::fmt::Debug for DMA2 {
548 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
549 f.debug_struct("DMA2").finish()
550 }
551}
552pub mod dma2;
554pub type DMA1 = crate::Periph<dma2::RegisterBlock, 0x4002_6000>;
558impl core::fmt::Debug for DMA1 {
559 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
560 f.debug_struct("DMA1").finish()
561 }
562}
563pub use self::dma2 as dma1;
565pub type RCC = crate::Periph<rcc::RegisterBlock, 0x4002_3800>;
569impl core::fmt::Debug for RCC {
570 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
571 f.debug_struct("RCC").finish()
572 }
573}
574pub mod rcc;
576pub type GPIOK = crate::Periph<gpiok::RegisterBlock, 0x4002_2800>;
580impl core::fmt::Debug for GPIOK {
581 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
582 f.debug_struct("GPIOK").finish()
583 }
584}
585pub mod gpiok;
587pub type GPIOJ = crate::Periph<gpiok::RegisterBlock, 0x4002_2400>;
591impl core::fmt::Debug for GPIOJ {
592 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
593 f.debug_struct("GPIOJ").finish()
594 }
595}
596pub use self::gpiok as gpioj;
598pub type GPIOI = crate::Periph<gpiok::RegisterBlock, 0x4002_2000>;
602impl core::fmt::Debug for GPIOI {
603 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
604 f.debug_struct("GPIOI").finish()
605 }
606}
607pub use self::gpiok as gpioi;
609pub type GPIOH = crate::Periph<gpiok::RegisterBlock, 0x4002_1c00>;
613impl core::fmt::Debug for GPIOH {
614 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
615 f.debug_struct("GPIOH").finish()
616 }
617}
618pub use self::gpiok as gpioh;
620pub type GPIOG = crate::Periph<gpiok::RegisterBlock, 0x4002_1800>;
624impl core::fmt::Debug for GPIOG {
625 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
626 f.debug_struct("GPIOG").finish()
627 }
628}
629pub use self::gpiok as gpiog;
631pub type GPIOF = crate::Periph<gpiok::RegisterBlock, 0x4002_1400>;
635impl core::fmt::Debug for GPIOF {
636 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
637 f.debug_struct("GPIOF").finish()
638 }
639}
640pub use self::gpiok as gpiof;
642pub type GPIOE = crate::Periph<gpiok::RegisterBlock, 0x4002_1000>;
646impl core::fmt::Debug for GPIOE {
647 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
648 f.debug_struct("GPIOE").finish()
649 }
650}
651pub use self::gpiok as gpioe;
653pub type GPIOD = crate::Periph<gpiok::RegisterBlock, 0x4002_0c00>;
657impl core::fmt::Debug for GPIOD {
658 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
659 f.debug_struct("GPIOD").finish()
660 }
661}
662pub use self::gpiok as gpiod;
664pub type GPIOC = crate::Periph<gpiok::RegisterBlock, 0x4002_0800>;
668impl core::fmt::Debug for GPIOC {
669 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
670 f.debug_struct("GPIOC").finish()
671 }
672}
673pub use self::gpiok as gpioc;
675pub type GPIOB = crate::Periph<gpiob::RegisterBlock, 0x4002_0400>;
679impl core::fmt::Debug for GPIOB {
680 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
681 f.debug_struct("GPIOB").finish()
682 }
683}
684pub mod gpiob;
686pub type GPIOA = crate::Periph<gpioa::RegisterBlock, 0x4002_0000>;
690impl core::fmt::Debug for GPIOA {
691 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
692 f.debug_struct("GPIOA").finish()
693 }
694}
695pub mod gpioa;
697pub type SYSCFG = crate::Periph<syscfg::RegisterBlock, 0x4001_3800>;
701impl core::fmt::Debug for SYSCFG {
702 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
703 f.debug_struct("SYSCFG").finish()
704 }
705}
706pub mod syscfg;
708pub type SPI1 = crate::Periph<spi1::RegisterBlock, 0x4001_3000>;
712impl core::fmt::Debug for SPI1 {
713 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
714 f.debug_struct("SPI1").finish()
715 }
716}
717pub mod spi1;
719pub type SPI2 = crate::Periph<spi1::RegisterBlock, 0x4000_3800>;
723impl core::fmt::Debug for SPI2 {
724 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
725 f.debug_struct("SPI2").finish()
726 }
727}
728pub use self::spi1 as spi2;
730pub type SPI3 = crate::Periph<spi1::RegisterBlock, 0x4000_3c00>;
734impl core::fmt::Debug for SPI3 {
735 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
736 f.debug_struct("SPI3").finish()
737 }
738}
739pub use self::spi1 as spi3;
741pub type I2S2EXT = crate::Periph<spi1::RegisterBlock, 0x4000_3400>;
745impl core::fmt::Debug for I2S2EXT {
746 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
747 f.debug_struct("I2S2EXT").finish()
748 }
749}
750pub use self::spi1 as i2s2ext;
752pub type I2S3EXT = crate::Periph<spi1::RegisterBlock, 0x4000_4000>;
756impl core::fmt::Debug for I2S3EXT {
757 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
758 f.debug_struct("I2S3EXT").finish()
759 }
760}
761pub use self::spi1 as i2s3ext;
763pub type SPI4 = crate::Periph<spi1::RegisterBlock, 0x4001_3400>;
767impl core::fmt::Debug for SPI4 {
768 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
769 f.debug_struct("SPI4").finish()
770 }
771}
772pub use self::spi1 as spi4;
774pub type SPI5 = crate::Periph<spi1::RegisterBlock, 0x4001_5000>;
778impl core::fmt::Debug for SPI5 {
779 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
780 f.debug_struct("SPI5").finish()
781 }
782}
783pub use self::spi1 as spi5;
785pub type SPI6 = crate::Periph<spi1::RegisterBlock, 0x4001_5400>;
789impl core::fmt::Debug for SPI6 {
790 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
791 f.debug_struct("SPI6").finish()
792 }
793}
794pub use self::spi1 as spi6;
796pub type SDIO = crate::Periph<sdio::RegisterBlock, 0x4001_2c00>;
800impl core::fmt::Debug for SDIO {
801 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
802 f.debug_struct("SDIO").finish()
803 }
804}
805pub mod sdio;
807pub type ADC1 = crate::Periph<adc1::RegisterBlock, 0x4001_2000>;
811impl core::fmt::Debug for ADC1 {
812 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
813 f.debug_struct("ADC1").finish()
814 }
815}
816pub mod adc1;
818pub type ADC2 = crate::Periph<adc1::RegisterBlock, 0x4001_2100>;
822impl core::fmt::Debug for ADC2 {
823 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
824 f.debug_struct("ADC2").finish()
825 }
826}
827pub use self::adc1 as adc2;
829pub type ADC3 = crate::Periph<adc1::RegisterBlock, 0x4001_2200>;
833impl core::fmt::Debug for ADC3 {
834 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
835 f.debug_struct("ADC3").finish()
836 }
837}
838pub use self::adc1 as adc3;
840pub type USART1 = crate::Periph<usart1::RegisterBlock, 0x4001_1000>;
844impl core::fmt::Debug for USART1 {
845 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
846 f.debug_struct("USART1").finish()
847 }
848}
849pub mod usart1;
851pub type USART6 = crate::Periph<usart1::RegisterBlock, 0x4001_1400>;
855impl core::fmt::Debug for USART6 {
856 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
857 f.debug_struct("USART6").finish()
858 }
859}
860pub use self::usart1 as usart6;
862pub type USART2 = crate::Periph<usart1::RegisterBlock, 0x4000_4400>;
866impl core::fmt::Debug for USART2 {
867 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
868 f.debug_struct("USART2").finish()
869 }
870}
871pub use self::usart1 as usart2;
873pub type USART3 = crate::Periph<usart1::RegisterBlock, 0x4000_4800>;
877impl core::fmt::Debug for USART3 {
878 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
879 f.debug_struct("USART3").finish()
880 }
881}
882pub use self::usart1 as usart3;
884pub type UART4 = crate::Periph<uart4::RegisterBlock, 0x4000_4c00>;
888impl core::fmt::Debug for UART4 {
889 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
890 f.debug_struct("UART4").finish()
891 }
892}
893pub mod uart4;
895pub type UART7 = crate::Periph<uart4::RegisterBlock, 0x4000_7800>;
899impl core::fmt::Debug for UART7 {
900 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
901 f.debug_struct("UART7").finish()
902 }
903}
904pub use self::uart4 as uart7;
906pub type UART8 = crate::Periph<uart4::RegisterBlock, 0x4000_7c00>;
910impl core::fmt::Debug for UART8 {
911 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
912 f.debug_struct("UART8").finish()
913 }
914}
915pub use self::uart4 as uart8;
917pub type DAC = crate::Periph<dac::RegisterBlock, 0x4000_7400>;
921impl core::fmt::Debug for DAC {
922 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
923 f.debug_struct("DAC").finish()
924 }
925}
926pub mod dac;
928pub type PWR = crate::Periph<pwr::RegisterBlock, 0x4000_7000>;
932impl core::fmt::Debug for PWR {
933 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
934 f.debug_struct("PWR").finish()
935 }
936}
937pub mod pwr;
939pub type IWDG = crate::Periph<iwdg::RegisterBlock, 0x4000_3000>;
943impl core::fmt::Debug for IWDG {
944 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
945 f.debug_struct("IWDG").finish()
946 }
947}
948pub mod iwdg;
950pub type WWDG = crate::Periph<wwdg::RegisterBlock, 0x4000_2c00>;
954impl core::fmt::Debug for WWDG {
955 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
956 f.debug_struct("WWDG").finish()
957 }
958}
959pub mod wwdg;
961pub type RTC = crate::Periph<rtc::RegisterBlock, 0x4000_2800>;
965impl core::fmt::Debug for RTC {
966 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
967 f.debug_struct("RTC").finish()
968 }
969}
970pub mod rtc;
972pub type UART5 = crate::Periph<uart4::RegisterBlock, 0x4000_5000>;
976impl core::fmt::Debug for UART5 {
977 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
978 f.debug_struct("UART5").finish()
979 }
980}
981pub use self::uart4 as uart5;
983pub type ADC_COMMON = crate::Periph<adc_common::RegisterBlock, 0x4001_2300>;
987impl core::fmt::Debug for ADC_COMMON {
988 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
989 f.debug_struct("ADC_COMMON").finish()
990 }
991}
992pub mod adc_common;
994pub type TIM1 = crate::Periph<tim1::RegisterBlock, 0x4001_0000>;
998impl core::fmt::Debug for TIM1 {
999 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1000 f.debug_struct("TIM1").finish()
1001 }
1002}
1003pub mod tim1;
1005pub type TIM8 = crate::Periph<tim1::RegisterBlock, 0x4001_0400>;
1009impl core::fmt::Debug for TIM8 {
1010 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1011 f.debug_struct("TIM8").finish()
1012 }
1013}
1014pub use self::tim1 as tim8;
1016pub type TIM2 = crate::Periph<tim2::RegisterBlock, 0x4000_0000>;
1020impl core::fmt::Debug for TIM2 {
1021 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1022 f.debug_struct("TIM2").finish()
1023 }
1024}
1025pub mod tim2;
1027pub type TIM3 = crate::Periph<tim3::RegisterBlock, 0x4000_0400>;
1031impl core::fmt::Debug for TIM3 {
1032 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1033 f.debug_struct("TIM3").finish()
1034 }
1035}
1036pub mod tim3;
1038pub type TIM4 = crate::Periph<tim3::RegisterBlock, 0x4000_0800>;
1042impl core::fmt::Debug for TIM4 {
1043 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1044 f.debug_struct("TIM4").finish()
1045 }
1046}
1047pub use self::tim3 as tim4;
1049pub type TIM5 = crate::Periph<tim5::RegisterBlock, 0x4000_0c00>;
1053impl core::fmt::Debug for TIM5 {
1054 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1055 f.debug_struct("TIM5").finish()
1056 }
1057}
1058pub mod tim5;
1060pub type TIM9 = crate::Periph<tim9::RegisterBlock, 0x4001_4000>;
1064impl core::fmt::Debug for TIM9 {
1065 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1066 f.debug_struct("TIM9").finish()
1067 }
1068}
1069pub mod tim9;
1071pub type TIM12 = crate::Periph<tim9::RegisterBlock, 0x4000_1800>;
1075impl core::fmt::Debug for TIM12 {
1076 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1077 f.debug_struct("TIM12").finish()
1078 }
1079}
1080pub use self::tim9 as tim12;
1082pub type TIM10 = crate::Periph<tim10::RegisterBlock, 0x4001_4400>;
1086impl core::fmt::Debug for TIM10 {
1087 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1088 f.debug_struct("TIM10").finish()
1089 }
1090}
1091pub mod tim10;
1093pub type TIM13 = crate::Periph<tim10::RegisterBlock, 0x4000_1c00>;
1097impl core::fmt::Debug for TIM13 {
1098 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1099 f.debug_struct("TIM13").finish()
1100 }
1101}
1102pub use self::tim10 as tim13;
1104pub type TIM14 = crate::Periph<tim10::RegisterBlock, 0x4000_2000>;
1108impl core::fmt::Debug for TIM14 {
1109 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1110 f.debug_struct("TIM14").finish()
1111 }
1112}
1113pub use self::tim10 as tim14;
1115pub type TIM11 = crate::Periph<tim11::RegisterBlock, 0x4001_4800>;
1119impl core::fmt::Debug for TIM11 {
1120 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1121 f.debug_struct("TIM11").finish()
1122 }
1123}
1124pub mod tim11;
1126pub type TIM6 = crate::Periph<tim6::RegisterBlock, 0x4000_1000>;
1130impl core::fmt::Debug for TIM6 {
1131 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1132 f.debug_struct("TIM6").finish()
1133 }
1134}
1135pub mod tim6;
1137pub type TIM7 = crate::Periph<tim6::RegisterBlock, 0x4000_1400>;
1141impl core::fmt::Debug for TIM7 {
1142 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1143 f.debug_struct("TIM7").finish()
1144 }
1145}
1146pub use self::tim6 as tim7;
1148pub type ETHERNET_MAC = crate::Periph<ethernet_mac::RegisterBlock, 0x4002_8000>;
1152impl core::fmt::Debug for ETHERNET_MAC {
1153 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1154 f.debug_struct("ETHERNET_MAC").finish()
1155 }
1156}
1157pub mod ethernet_mac;
1159pub type ETHERNET_MMC = crate::Periph<ethernet_mmc::RegisterBlock, 0x4002_8100>;
1163impl core::fmt::Debug for ETHERNET_MMC {
1164 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1165 f.debug_struct("ETHERNET_MMC").finish()
1166 }
1167}
1168pub mod ethernet_mmc;
1170pub type ETHERNET_PTP = crate::Periph<ethernet_ptp::RegisterBlock, 0x4002_8700>;
1174impl core::fmt::Debug for ETHERNET_PTP {
1175 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1176 f.debug_struct("ETHERNET_PTP").finish()
1177 }
1178}
1179pub mod ethernet_ptp;
1181pub type ETHERNET_DMA = crate::Periph<ethernet_dma::RegisterBlock, 0x4002_9000>;
1185impl core::fmt::Debug for ETHERNET_DMA {
1186 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1187 f.debug_struct("ETHERNET_DMA").finish()
1188 }
1189}
1190pub mod ethernet_dma;
1192pub type CRC = crate::Periph<crc::RegisterBlock, 0x4002_3000>;
1196impl core::fmt::Debug for CRC {
1197 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1198 f.debug_struct("CRC").finish()
1199 }
1200}
1201pub mod crc;
1203pub type OTG_FS_GLOBAL = crate::Periph<otg_fs_global::RegisterBlock, 0x5000_0000>;
1207impl core::fmt::Debug for OTG_FS_GLOBAL {
1208 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1209 f.debug_struct("OTG_FS_GLOBAL").finish()
1210 }
1211}
1212pub mod otg_fs_global;
1214pub type OTG_FS_HOST = crate::Periph<otg_fs_host::RegisterBlock, 0x5000_0400>;
1218impl core::fmt::Debug for OTG_FS_HOST {
1219 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1220 f.debug_struct("OTG_FS_HOST").finish()
1221 }
1222}
1223pub mod otg_fs_host;
1225pub type OTG_FS_DEVICE = crate::Periph<otg_fs_device::RegisterBlock, 0x5000_0800>;
1229impl core::fmt::Debug for OTG_FS_DEVICE {
1230 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1231 f.debug_struct("OTG_FS_DEVICE").finish()
1232 }
1233}
1234pub mod otg_fs_device;
1236pub type OTG_FS_PWRCLK = crate::Periph<otg_fs_pwrclk::RegisterBlock, 0x5000_0e00>;
1240impl core::fmt::Debug for OTG_FS_PWRCLK {
1241 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1242 f.debug_struct("OTG_FS_PWRCLK").finish()
1243 }
1244}
1245pub mod otg_fs_pwrclk;
1247pub type CAN1 = crate::Periph<can1::RegisterBlock, 0x4000_6400>;
1251impl core::fmt::Debug for CAN1 {
1252 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1253 f.debug_struct("CAN1").finish()
1254 }
1255}
1256pub mod can1;
1258pub type CAN2 = crate::Periph<can1::RegisterBlock, 0x4000_6800>;
1262impl core::fmt::Debug for CAN2 {
1263 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1264 f.debug_struct("CAN2").finish()
1265 }
1266}
1267pub use self::can1 as can2;
1269pub type FLASH = crate::Periph<flash::RegisterBlock, 0x4002_3c00>;
1273impl core::fmt::Debug for FLASH {
1274 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1275 f.debug_struct("FLASH").finish()
1276 }
1277}
1278pub mod flash;
1280pub type EXTI = crate::Periph<exti::RegisterBlock, 0x4001_3c00>;
1284impl core::fmt::Debug for EXTI {
1285 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1286 f.debug_struct("EXTI").finish()
1287 }
1288}
1289pub mod exti;
1291pub type OTG_HS_GLOBAL = crate::Periph<otg_hs_global::RegisterBlock, 0x4004_0000>;
1295impl core::fmt::Debug for OTG_HS_GLOBAL {
1296 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1297 f.debug_struct("OTG_HS_GLOBAL").finish()
1298 }
1299}
1300pub mod otg_hs_global;
1302pub type OTG_HS_HOST = crate::Periph<otg_hs_host::RegisterBlock, 0x4004_0400>;
1306impl core::fmt::Debug for OTG_HS_HOST {
1307 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1308 f.debug_struct("OTG_HS_HOST").finish()
1309 }
1310}
1311pub mod otg_hs_host;
1313pub type OTG_HS_DEVICE = crate::Periph<otg_hs_device::RegisterBlock, 0x4004_0800>;
1317impl core::fmt::Debug for OTG_HS_DEVICE {
1318 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1319 f.debug_struct("OTG_HS_DEVICE").finish()
1320 }
1321}
1322pub mod otg_hs_device;
1324pub type OTG_HS_PWRCLK = crate::Periph<otg_hs_pwrclk::RegisterBlock, 0x4004_0e00>;
1328impl core::fmt::Debug for OTG_HS_PWRCLK {
1329 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1330 f.debug_struct("OTG_HS_PWRCLK").finish()
1331 }
1332}
1333pub mod otg_hs_pwrclk;
1335pub type LTDC = crate::Periph<ltdc::RegisterBlock, 0x4001_6800>;
1339impl core::fmt::Debug for LTDC {
1340 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1341 f.debug_struct("LTDC").finish()
1342 }
1343}
1344pub mod ltdc;
1346pub type SAI = crate::Periph<sai::RegisterBlock, 0x4001_5800>;
1350impl core::fmt::Debug for SAI {
1351 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1352 f.debug_struct("SAI").finish()
1353 }
1354}
1355pub mod sai;
1357pub type DMA2D = crate::Periph<dma2d::RegisterBlock, 0x4002_b000>;
1361impl core::fmt::Debug for DMA2D {
1362 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1363 f.debug_struct("DMA2D").finish()
1364 }
1365}
1366pub mod dma2d;
1368pub type I2C1 = crate::Periph<i2c1::RegisterBlock, 0x4000_5400>;
1372impl core::fmt::Debug for I2C1 {
1373 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1374 f.debug_struct("I2C1").finish()
1375 }
1376}
1377pub mod i2c1;
1379pub type I2C3 = crate::Periph<i2c1::RegisterBlock, 0x4000_5c00>;
1383impl core::fmt::Debug for I2C3 {
1384 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1385 f.debug_struct("I2C3").finish()
1386 }
1387}
1388pub use self::i2c1 as i2c3;
1390pub type I2C2 = crate::Periph<i2c1::RegisterBlock, 0x4000_5800>;
1394impl core::fmt::Debug for I2C2 {
1395 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1396 f.debug_struct("I2C2").finish()
1397 }
1398}
1399pub use self::i2c1 as i2c2;
1401pub type DSI = crate::Periph<dsi::RegisterBlock, 0x4001_6c00>;
1405impl core::fmt::Debug for DSI {
1406 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1407 f.debug_struct("DSI").finish()
1408 }
1409}
1410pub mod dsi;
1412pub type QUADSPI = crate::Periph<quadspi::RegisterBlock, 0xa000_1000>;
1416impl core::fmt::Debug for QUADSPI {
1417 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1418 f.debug_struct("QUADSPI").finish()
1419 }
1420}
1421pub mod quadspi;
1423#[no_mangle]
1424static mut DEVICE_PERIPHERALS: bool = false;
1425#[allow(non_snake_case)]
1427pub struct Peripherals {
1428 pub RNG: RNG,
1430 pub HASH: HASH,
1432 pub CRYP: CRYP,
1434 pub DCMI: DCMI,
1436 pub FMC: FMC,
1438 pub DBGMCU: DBGMCU,
1440 pub DMA2: DMA2,
1442 pub DMA1: DMA1,
1444 pub RCC: RCC,
1446 pub GPIOK: GPIOK,
1448 pub GPIOJ: GPIOJ,
1450 pub GPIOI: GPIOI,
1452 pub GPIOH: GPIOH,
1454 pub GPIOG: GPIOG,
1456 pub GPIOF: GPIOF,
1458 pub GPIOE: GPIOE,
1460 pub GPIOD: GPIOD,
1462 pub GPIOC: GPIOC,
1464 pub GPIOB: GPIOB,
1466 pub GPIOA: GPIOA,
1468 pub SYSCFG: SYSCFG,
1470 pub SPI1: SPI1,
1472 pub SPI2: SPI2,
1474 pub SPI3: SPI3,
1476 pub I2S2EXT: I2S2EXT,
1478 pub I2S3EXT: I2S3EXT,
1480 pub SPI4: SPI4,
1482 pub SPI5: SPI5,
1484 pub SPI6: SPI6,
1486 pub SDIO: SDIO,
1488 pub ADC1: ADC1,
1490 pub ADC2: ADC2,
1492 pub ADC3: ADC3,
1494 pub USART1: USART1,
1496 pub USART6: USART6,
1498 pub USART2: USART2,
1500 pub USART3: USART3,
1502 pub UART4: UART4,
1504 pub UART7: UART7,
1506 pub UART8: UART8,
1508 pub DAC: DAC,
1510 pub PWR: PWR,
1512 pub IWDG: IWDG,
1514 pub WWDG: WWDG,
1516 pub RTC: RTC,
1518 pub UART5: UART5,
1520 pub ADC_COMMON: ADC_COMMON,
1522 pub TIM1: TIM1,
1524 pub TIM8: TIM8,
1526 pub TIM2: TIM2,
1528 pub TIM3: TIM3,
1530 pub TIM4: TIM4,
1532 pub TIM5: TIM5,
1534 pub TIM9: TIM9,
1536 pub TIM12: TIM12,
1538 pub TIM10: TIM10,
1540 pub TIM13: TIM13,
1542 pub TIM14: TIM14,
1544 pub TIM11: TIM11,
1546 pub TIM6: TIM6,
1548 pub TIM7: TIM7,
1550 pub ETHERNET_MAC: ETHERNET_MAC,
1552 pub ETHERNET_MMC: ETHERNET_MMC,
1554 pub ETHERNET_PTP: ETHERNET_PTP,
1556 pub ETHERNET_DMA: ETHERNET_DMA,
1558 pub CRC: CRC,
1560 pub OTG_FS_GLOBAL: OTG_FS_GLOBAL,
1562 pub OTG_FS_HOST: OTG_FS_HOST,
1564 pub OTG_FS_DEVICE: OTG_FS_DEVICE,
1566 pub OTG_FS_PWRCLK: OTG_FS_PWRCLK,
1568 pub CAN1: CAN1,
1570 pub CAN2: CAN2,
1572 pub FLASH: FLASH,
1574 pub EXTI: EXTI,
1576 pub OTG_HS_GLOBAL: OTG_HS_GLOBAL,
1578 pub OTG_HS_HOST: OTG_HS_HOST,
1580 pub OTG_HS_DEVICE: OTG_HS_DEVICE,
1582 pub OTG_HS_PWRCLK: OTG_HS_PWRCLK,
1584 pub LTDC: LTDC,
1586 pub SAI: SAI,
1588 pub DMA2D: DMA2D,
1590 pub I2C1: I2C1,
1592 pub I2C3: I2C3,
1594 pub I2C2: I2C2,
1596 pub DSI: DSI,
1598 pub QUADSPI: QUADSPI,
1600}
1601impl Peripherals {
1602 #[cfg(feature = "critical-section")]
1604 #[inline]
1605 pub fn take() -> Option<Self> {
1606 critical_section::with(|_| {
1607 if unsafe { DEVICE_PERIPHERALS } {
1608 return None;
1609 }
1610 Some(unsafe { Peripherals::steal() })
1611 })
1612 }
1613 #[inline]
1619 pub unsafe fn steal() -> Self {
1620 DEVICE_PERIPHERALS = true;
1621 Peripherals {
1622 RNG: RNG::steal(),
1623 HASH: HASH::steal(),
1624 CRYP: CRYP::steal(),
1625 DCMI: DCMI::steal(),
1626 FMC: FMC::steal(),
1627 DBGMCU: DBGMCU::steal(),
1628 DMA2: DMA2::steal(),
1629 DMA1: DMA1::steal(),
1630 RCC: RCC::steal(),
1631 GPIOK: GPIOK::steal(),
1632 GPIOJ: GPIOJ::steal(),
1633 GPIOI: GPIOI::steal(),
1634 GPIOH: GPIOH::steal(),
1635 GPIOG: GPIOG::steal(),
1636 GPIOF: GPIOF::steal(),
1637 GPIOE: GPIOE::steal(),
1638 GPIOD: GPIOD::steal(),
1639 GPIOC: GPIOC::steal(),
1640 GPIOB: GPIOB::steal(),
1641 GPIOA: GPIOA::steal(),
1642 SYSCFG: SYSCFG::steal(),
1643 SPI1: SPI1::steal(),
1644 SPI2: SPI2::steal(),
1645 SPI3: SPI3::steal(),
1646 I2S2EXT: I2S2EXT::steal(),
1647 I2S3EXT: I2S3EXT::steal(),
1648 SPI4: SPI4::steal(),
1649 SPI5: SPI5::steal(),
1650 SPI6: SPI6::steal(),
1651 SDIO: SDIO::steal(),
1652 ADC1: ADC1::steal(),
1653 ADC2: ADC2::steal(),
1654 ADC3: ADC3::steal(),
1655 USART1: USART1::steal(),
1656 USART6: USART6::steal(),
1657 USART2: USART2::steal(),
1658 USART3: USART3::steal(),
1659 UART4: UART4::steal(),
1660 UART7: UART7::steal(),
1661 UART8: UART8::steal(),
1662 DAC: DAC::steal(),
1663 PWR: PWR::steal(),
1664 IWDG: IWDG::steal(),
1665 WWDG: WWDG::steal(),
1666 RTC: RTC::steal(),
1667 UART5: UART5::steal(),
1668 ADC_COMMON: ADC_COMMON::steal(),
1669 TIM1: TIM1::steal(),
1670 TIM8: TIM8::steal(),
1671 TIM2: TIM2::steal(),
1672 TIM3: TIM3::steal(),
1673 TIM4: TIM4::steal(),
1674 TIM5: TIM5::steal(),
1675 TIM9: TIM9::steal(),
1676 TIM12: TIM12::steal(),
1677 TIM10: TIM10::steal(),
1678 TIM13: TIM13::steal(),
1679 TIM14: TIM14::steal(),
1680 TIM11: TIM11::steal(),
1681 TIM6: TIM6::steal(),
1682 TIM7: TIM7::steal(),
1683 ETHERNET_MAC: ETHERNET_MAC::steal(),
1684 ETHERNET_MMC: ETHERNET_MMC::steal(),
1685 ETHERNET_PTP: ETHERNET_PTP::steal(),
1686 ETHERNET_DMA: ETHERNET_DMA::steal(),
1687 CRC: CRC::steal(),
1688 OTG_FS_GLOBAL: OTG_FS_GLOBAL::steal(),
1689 OTG_FS_HOST: OTG_FS_HOST::steal(),
1690 OTG_FS_DEVICE: OTG_FS_DEVICE::steal(),
1691 OTG_FS_PWRCLK: OTG_FS_PWRCLK::steal(),
1692 CAN1: CAN1::steal(),
1693 CAN2: CAN2::steal(),
1694 FLASH: FLASH::steal(),
1695 EXTI: EXTI::steal(),
1696 OTG_HS_GLOBAL: OTG_HS_GLOBAL::steal(),
1697 OTG_HS_HOST: OTG_HS_HOST::steal(),
1698 OTG_HS_DEVICE: OTG_HS_DEVICE::steal(),
1699 OTG_HS_PWRCLK: OTG_HS_PWRCLK::steal(),
1700 LTDC: LTDC::steal(),
1701 SAI: SAI::steal(),
1702 DMA2D: DMA2D::steal(),
1703 I2C1: I2C1::steal(),
1704 I2C3: I2C3::steal(),
1705 I2C2: I2C2::steal(),
1706 DSI: DSI::steal(),
1707 QUADSPI: QUADSPI::steal(),
1708 }
1709 }
1710}