1#![cfg_attr(not(feature = "tracing"), no_std)]
20#![allow(non_camel_case_types)]
21#![doc = ""]
22pub mod common;
23pub use common::*;
24
25#[cfg(feature = "tracing")]
26pub mod reg_name;
27#[cfg(feature = "tracing")]
28pub mod tracing;
29
30#[cfg(feature = "aes_hash")]
31pub mod aes_hash;
32#[cfg(feature = "anamisc")]
33pub mod anamisc;
34#[cfg(feature = "apu")]
35pub mod apu;
36#[cfg(feature = "ble")]
37pub mod ble;
38#[cfg(feature = "cache")]
39pub mod cache;
40#[cfg(feature = "chip_version")]
41pub mod chip_version;
42#[cfg(feature = "coex")]
43pub mod coex;
44#[cfg(feature = "crg_per")]
45pub mod crg_per;
46#[cfg(feature = "crg_top")]
47pub mod crg_top;
48#[cfg(feature = "dcdc")]
49pub mod dcdc;
50#[cfg(feature = "dma")]
51pub mod dma;
52#[cfg(feature = "ecc")]
53pub mod ecc;
54#[cfg(feature = "ftdf")]
55pub mod ftdf;
56#[cfg(feature = "gp_timers")]
57pub mod gp_timers;
58#[cfg(feature = "gpadc")]
59pub mod gpadc;
60#[cfg(feature = "gpio")]
61pub mod gpio;
62#[cfg(feature = "gpreg")]
63pub mod gpreg;
64#[cfg(feature = "i2c")]
65pub mod i2c;
66#[cfg(feature = "i2c2")]
67pub mod i2c2;
68#[cfg(feature = "ir")]
69pub mod ir;
70#[cfg(feature = "kbscan")]
71pub mod kbscan;
72#[cfg(feature = "nvic")]
73pub mod nvic;
74#[cfg(feature = "otpc")]
75pub mod otpc;
76#[cfg(feature = "qspic")]
77pub mod qspic;
78#[cfg(feature = "quad")]
79pub mod quad;
80#[cfg(feature = "scb")]
81pub mod scb;
82#[cfg(feature = "spi")]
83pub mod spi;
84#[cfg(feature = "spi2")]
85pub mod spi2;
86#[cfg(feature = "systick")]
87pub mod systick;
88#[cfg(feature = "timer1")]
89pub mod timer1;
90#[cfg(feature = "trng")]
91pub mod trng;
92#[cfg(feature = "uart")]
93pub mod uart;
94#[cfg(feature = "uart2")]
95pub mod uart2;
96#[cfg(feature = "usb")]
97pub mod usb;
98#[cfg(feature = "wakeup")]
99pub mod wakeup;
100#[cfg(feature = "wdog")]
101pub mod wdog;
102
103#[cfg(feature = "nvic")]
104#[derive(Copy, Clone, Eq, PartialEq)]
105pub struct Nvic {
106 ptr: *mut u8,
107}
108#[cfg(feature = "nvic")]
109pub const NVIC: self::Nvic = self::Nvic {
110 ptr: 0xe000e100u32 as _,
111};
112#[cfg(feature = "scb")]
113#[derive(Copy, Clone, Eq, PartialEq)]
114pub struct Scb {
115 ptr: *mut u8,
116}
117#[cfg(feature = "scb")]
118pub const SCB: self::Scb = self::Scb {
119 ptr: 0xe000ed00u32 as _,
120};
121#[cfg(feature = "systick")]
122#[derive(Copy, Clone, Eq, PartialEq)]
123pub struct SysTick {
124 ptr: *mut u8,
125}
126#[cfg(feature = "systick")]
127pub const SYSTICK: self::SysTick = self::SysTick {
128 ptr: 0xe000e010u32 as _,
129};
130#[cfg(feature = "aes_hash")]
131#[derive(Copy, Clone, Eq, PartialEq)]
132pub struct AesHash {
133 ptr: *mut u8,
134}
135#[cfg(feature = "aes_hash")]
136pub const AES_HASH: self::AesHash = self::AesHash {
137 ptr: 0x40020000u32 as _,
138};
139#[cfg(feature = "anamisc")]
140#[derive(Copy, Clone, Eq, PartialEq)]
141pub struct Anamisc {
142 ptr: *mut u8,
143}
144#[cfg(feature = "anamisc")]
145pub const ANAMISC: self::Anamisc = self::Anamisc {
146 ptr: 0x50001b00u32 as _,
147};
148#[cfg(feature = "apu")]
149#[derive(Copy, Clone, Eq, PartialEq)]
150pub struct Apu {
151 ptr: *mut u8,
152}
153#[cfg(feature = "apu")]
154pub const APU: self::Apu = self::Apu {
155 ptr: 0x50004000u32 as _,
156};
157#[cfg(feature = "ble")]
158#[derive(Copy, Clone, Eq, PartialEq)]
159pub struct Ble {
160 ptr: *mut u8,
161}
162#[cfg(feature = "ble")]
163pub const BLE: self::Ble = self::Ble {
164 ptr: 0x40000000u32 as _,
165};
166#[cfg(feature = "cache")]
167#[derive(Copy, Clone, Eq, PartialEq)]
168pub struct Cache {
169 ptr: *mut u8,
170}
171#[cfg(feature = "cache")]
172pub const CACHE: self::Cache = self::Cache {
173 ptr: 0x400c3000u32 as _,
174};
175#[cfg(feature = "chip_version")]
176#[derive(Copy, Clone, Eq, PartialEq)]
177pub struct ChipVersion {
178 ptr: *mut u8,
179}
180#[cfg(feature = "chip_version")]
181pub const CHIP_VERSION: self::ChipVersion = self::ChipVersion {
182 ptr: 0x50003200u32 as _,
183};
184#[cfg(feature = "coex")]
185#[derive(Copy, Clone, Eq, PartialEq)]
186pub struct Coex {
187 ptr: *mut u8,
188}
189#[cfg(feature = "coex")]
190pub const COEX: self::Coex = self::Coex {
191 ptr: 0x50002f00u32 as _,
192};
193#[cfg(feature = "crg_per")]
194#[derive(Copy, Clone, Eq, PartialEq)]
195pub struct CrgPer {
196 ptr: *mut u8,
197}
198#[cfg(feature = "crg_per")]
199pub const CRG_PER: self::CrgPer = self::CrgPer {
200 ptr: 0x50001c00u32 as _,
201};
202#[cfg(feature = "crg_top")]
203#[derive(Copy, Clone, Eq, PartialEq)]
204pub struct CrgTop {
205 ptr: *mut u8,
206}
207#[cfg(feature = "crg_top")]
208pub const CRG_TOP: self::CrgTop = self::CrgTop {
209 ptr: 0x50000000u32 as _,
210};
211#[cfg(feature = "dcdc")]
212#[derive(Copy, Clone, Eq, PartialEq)]
213pub struct Dcdc {
214 ptr: *mut u8,
215}
216#[cfg(feature = "dcdc")]
217pub const DCDC: self::Dcdc = self::Dcdc {
218 ptr: 0x50000080u32 as _,
219};
220#[cfg(feature = "dma")]
221#[derive(Copy, Clone, Eq, PartialEq)]
222pub struct Dma {
223 ptr: *mut u8,
224}
225#[cfg(feature = "dma")]
226pub const DMA: self::Dma = self::Dma {
227 ptr: 0x50003500u32 as _,
228};
229#[cfg(feature = "ecc")]
230#[derive(Copy, Clone, Eq, PartialEq)]
231pub struct Ecc {
232 ptr: *mut u8,
233}
234#[cfg(feature = "ecc")]
235pub const ECC: self::Ecc = self::Ecc {
236 ptr: 0x50006000u32 as _,
237};
238#[cfg(feature = "ftdf")]
239#[derive(Copy, Clone, Eq, PartialEq)]
240pub struct Ftdf {
241 ptr: *mut u8,
242}
243#[cfg(feature = "ftdf")]
244pub const FTDF: self::Ftdf = self::Ftdf {
245 ptr: 0x40080000u32 as _,
246};
247#[cfg(feature = "gp_timers")]
248#[derive(Copy, Clone, Eq, PartialEq)]
249pub struct GpTimers {
250 ptr: *mut u8,
251}
252#[cfg(feature = "gp_timers")]
253pub const GP_TIMERS: self::GpTimers = self::GpTimers {
254 ptr: 0x50003400u32 as _,
255};
256#[cfg(feature = "gpadc")]
257#[derive(Copy, Clone, Eq, PartialEq)]
258pub struct Gpadc {
259 ptr: *mut u8,
260}
261#[cfg(feature = "gpadc")]
262pub const GPADC: self::Gpadc = self::Gpadc {
263 ptr: 0x50001900u32 as _,
264};
265#[cfg(feature = "gpio")]
266#[derive(Copy, Clone, Eq, PartialEq)]
267pub struct Gpio {
268 ptr: *mut u8,
269}
270#[cfg(feature = "gpio")]
271pub const GPIO: self::Gpio = self::Gpio {
272 ptr: 0x50003000u32 as _,
273};
274#[cfg(feature = "gpreg")]
275#[derive(Copy, Clone, Eq, PartialEq)]
276pub struct Gpreg {
277 ptr: *mut u8,
278}
279#[cfg(feature = "gpreg")]
280pub const GPREG: self::Gpreg = self::Gpreg {
281 ptr: 0x50003300u32 as _,
282};
283#[cfg(feature = "i2c")]
284#[derive(Copy, Clone, Eq, PartialEq)]
285pub struct I2C {
286 ptr: *mut u8,
287}
288#[cfg(feature = "i2c")]
289pub const I2C: self::I2C = self::I2C {
290 ptr: 0x50001400u32 as _,
291};
292#[cfg(feature = "i2c2")]
293#[derive(Copy, Clone, Eq, PartialEq)]
294pub struct I2C2 {
295 ptr: *mut u8,
296}
297#[cfg(feature = "i2c2")]
298pub const I2C2: self::I2C2 = self::I2C2 {
299 ptr: 0x50001500u32 as _,
300};
301#[cfg(feature = "ir")]
302#[derive(Copy, Clone, Eq, PartialEq)]
303pub struct Ir {
304 ptr: *mut u8,
305}
306#[cfg(feature = "ir")]
307pub const IR: self::Ir = self::Ir {
308 ptr: 0x50001700u32 as _,
309};
310#[cfg(feature = "kbscan")]
311#[derive(Copy, Clone, Eq, PartialEq)]
312pub struct Kbscan {
313 ptr: *mut u8,
314}
315#[cfg(feature = "kbscan")]
316pub const KBSCAN: self::Kbscan = self::Kbscan {
317 ptr: 0x50001600u32 as _,
318};
319#[cfg(feature = "otpc")]
320#[derive(Copy, Clone, Eq, PartialEq)]
321pub struct Otpc {
322 ptr: *mut u8,
323}
324#[cfg(feature = "otpc")]
325pub const OTPC: self::Otpc = self::Otpc {
326 ptr: 0x7f40000u32 as _,
327};
328#[cfg(feature = "qspic")]
329#[derive(Copy, Clone, Eq, PartialEq)]
330pub struct Qspic {
331 ptr: *mut u8,
332}
333#[cfg(feature = "qspic")]
334pub const QSPIC: self::Qspic = self::Qspic {
335 ptr: 0xc000000u32 as _,
336};
337#[cfg(feature = "quad")]
338#[derive(Copy, Clone, Eq, PartialEq)]
339pub struct Quad {
340 ptr: *mut u8,
341}
342#[cfg(feature = "quad")]
343pub const QUAD: self::Quad = self::Quad {
344 ptr: 0x50001a00u32 as _,
345};
346#[cfg(feature = "spi")]
347#[derive(Copy, Clone, Eq, PartialEq)]
348pub struct Spi {
349 ptr: *mut u8,
350}
351#[cfg(feature = "spi")]
352pub const SPI: self::Spi = self::Spi {
353 ptr: 0x50001200u32 as _,
354};
355#[cfg(feature = "spi2")]
356#[derive(Copy, Clone, Eq, PartialEq)]
357pub struct Spi2 {
358 ptr: *mut u8,
359}
360#[cfg(feature = "spi2")]
361pub const SPI2: self::Spi2 = self::Spi2 {
362 ptr: 0x50001300u32 as _,
363};
364#[cfg(feature = "timer1")]
365#[derive(Copy, Clone, Eq, PartialEq)]
366pub struct Timer1 {
367 ptr: *mut u8,
368}
369#[cfg(feature = "timer1")]
370pub const TIMER1: self::Timer1 = self::Timer1 {
371 ptr: 0x50000200u32 as _,
372};
373#[cfg(feature = "trng")]
374#[derive(Copy, Clone, Eq, PartialEq)]
375pub struct Trng {
376 ptr: *mut u8,
377}
378#[cfg(feature = "trng")]
379pub const TRNG: self::Trng = self::Trng {
380 ptr: 0x50005000u32 as _,
381};
382#[cfg(feature = "uart")]
383#[derive(Copy, Clone, Eq, PartialEq)]
384pub struct Uart {
385 ptr: *mut u8,
386}
387#[cfg(feature = "uart")]
388pub const UART: self::Uart = self::Uart {
389 ptr: 0x50001000u32 as _,
390};
391#[cfg(feature = "uart2")]
392#[derive(Copy, Clone, Eq, PartialEq)]
393pub struct Uart2 {
394 ptr: *mut u8,
395}
396#[cfg(feature = "uart2")]
397pub const UART2: self::Uart2 = self::Uart2 {
398 ptr: 0x50001100u32 as _,
399};
400#[cfg(feature = "usb")]
401#[derive(Copy, Clone, Eq, PartialEq)]
402pub struct Usb {
403 ptr: *mut u8,
404}
405#[cfg(feature = "usb")]
406pub const USB: self::Usb = self::Usb {
407 ptr: 0x50001800u32 as _,
408};
409#[cfg(feature = "wakeup")]
410#[derive(Copy, Clone, Eq, PartialEq)]
411pub struct Wakeup {
412 ptr: *mut u8,
413}
414#[cfg(feature = "wakeup")]
415pub const WAKEUP: self::Wakeup = self::Wakeup {
416 ptr: 0x50000100u32 as _,
417};
418#[cfg(feature = "wdog")]
419#[derive(Copy, Clone, Eq, PartialEq)]
420pub struct Wdog {
421 ptr: *mut u8,
422}
423#[cfg(feature = "wdog")]
424pub const WDOG: self::Wdog = self::Wdog {
425 ptr: 0x50003100u32 as _,
426};
427
428pub use cortex_m::peripheral::Peripherals as CorePeripherals;
429pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, FPU, ITM, MPU, NVIC, SCB, SYST, TPIU};
430#[doc = "Number available in the NVIC for configuring priority"]
431pub const NVIC_PRIO_BITS: u8 = 3;
432#[doc(hidden)]
433pub union Vector {
434 _handler: unsafe extern "C" fn(),
435 _reserved: u32,
436}
437#[allow(non_snake_case)]
438pub struct Peripherals {
440 #[cfg(feature = "nvic")]
441 pub NVIC: self::Nvic,
442 #[cfg(feature = "scb")]
443 pub SCB: self::Scb,
444 #[cfg(feature = "systick")]
445 pub SYSTICK: self::SysTick,
446 #[cfg(feature = "aes_hash")]
447 pub AES_HASH: self::AesHash,
448 #[cfg(feature = "anamisc")]
449 pub ANAMISC: self::Anamisc,
450 #[cfg(feature = "apu")]
451 pub APU: self::Apu,
452 #[cfg(feature = "ble")]
453 pub BLE: self::Ble,
454 #[cfg(feature = "cache")]
455 pub CACHE: self::Cache,
456 #[cfg(feature = "chip_version")]
457 pub CHIP_VERSION: self::ChipVersion,
458 #[cfg(feature = "coex")]
459 pub COEX: self::Coex,
460 #[cfg(feature = "crg_per")]
461 pub CRG_PER: self::CrgPer,
462 #[cfg(feature = "crg_top")]
463 pub CRG_TOP: self::CrgTop,
464 #[cfg(feature = "dcdc")]
465 pub DCDC: self::Dcdc,
466 #[cfg(feature = "dma")]
467 pub DMA: self::Dma,
468 #[cfg(feature = "ecc")]
469 pub ECC: self::Ecc,
470 #[cfg(feature = "ftdf")]
471 pub FTDF: self::Ftdf,
472 #[cfg(feature = "gp_timers")]
473 pub GP_TIMERS: self::GpTimers,
474 #[cfg(feature = "gpadc")]
475 pub GPADC: self::Gpadc,
476 #[cfg(feature = "gpio")]
477 pub GPIO: self::Gpio,
478 #[cfg(feature = "gpreg")]
479 pub GPREG: self::Gpreg,
480 #[cfg(feature = "i2c")]
481 pub I2C: self::I2C,
482 #[cfg(feature = "i2c2")]
483 pub I2C2: self::I2C2,
484 #[cfg(feature = "ir")]
485 pub IR: self::Ir,
486 #[cfg(feature = "kbscan")]
487 pub KBSCAN: self::Kbscan,
488 #[cfg(feature = "otpc")]
489 pub OTPC: self::Otpc,
490 #[cfg(feature = "qspic")]
491 pub QSPIC: self::Qspic,
492 #[cfg(feature = "quad")]
493 pub QUAD: self::Quad,
494 #[cfg(feature = "spi")]
495 pub SPI: self::Spi,
496 #[cfg(feature = "spi2")]
497 pub SPI2: self::Spi2,
498 #[cfg(feature = "timer1")]
499 pub TIMER1: self::Timer1,
500 #[cfg(feature = "trng")]
501 pub TRNG: self::Trng,
502 #[cfg(feature = "uart")]
503 pub UART: self::Uart,
504 #[cfg(feature = "uart2")]
505 pub UART2: self::Uart2,
506 #[cfg(feature = "usb")]
507 pub USB: self::Usb,
508 #[cfg(feature = "wakeup")]
509 pub WAKEUP: self::Wakeup,
510 #[cfg(feature = "wdog")]
511 pub WDOG: self::Wdog,
512}
513
514impl Peripherals {
515 #[inline]
518 pub fn take() -> Option<Self> {
519 Some(Self::steal())
520 }
521
522 #[inline]
525 pub fn steal() -> Self {
526 Peripherals {
527 #[cfg(feature = "nvic")]
528 NVIC: crate::NVIC,
529 #[cfg(feature = "scb")]
530 SCB: crate::SCB,
531 #[cfg(feature = "systick")]
532 SYSTICK: crate::SYSTICK,
533 #[cfg(feature = "aes_hash")]
534 AES_HASH: crate::AES_HASH,
535 #[cfg(feature = "anamisc")]
536 ANAMISC: crate::ANAMISC,
537 #[cfg(feature = "apu")]
538 APU: crate::APU,
539 #[cfg(feature = "ble")]
540 BLE: crate::BLE,
541 #[cfg(feature = "cache")]
542 CACHE: crate::CACHE,
543 #[cfg(feature = "chip_version")]
544 CHIP_VERSION: crate::CHIP_VERSION,
545 #[cfg(feature = "coex")]
546 COEX: crate::COEX,
547 #[cfg(feature = "crg_per")]
548 CRG_PER: crate::CRG_PER,
549 #[cfg(feature = "crg_top")]
550 CRG_TOP: crate::CRG_TOP,
551 #[cfg(feature = "dcdc")]
552 DCDC: crate::DCDC,
553 #[cfg(feature = "dma")]
554 DMA: crate::DMA,
555 #[cfg(feature = "ecc")]
556 ECC: crate::ECC,
557 #[cfg(feature = "ftdf")]
558 FTDF: crate::FTDF,
559 #[cfg(feature = "gp_timers")]
560 GP_TIMERS: crate::GP_TIMERS,
561 #[cfg(feature = "gpadc")]
562 GPADC: crate::GPADC,
563 #[cfg(feature = "gpio")]
564 GPIO: crate::GPIO,
565 #[cfg(feature = "gpreg")]
566 GPREG: crate::GPREG,
567 #[cfg(feature = "i2c")]
568 I2C: crate::I2C,
569 #[cfg(feature = "i2c2")]
570 I2C2: crate::I2C2,
571 #[cfg(feature = "ir")]
572 IR: crate::IR,
573 #[cfg(feature = "kbscan")]
574 KBSCAN: crate::KBSCAN,
575 #[cfg(feature = "otpc")]
576 OTPC: crate::OTPC,
577 #[cfg(feature = "qspic")]
578 QSPIC: crate::QSPIC,
579 #[cfg(feature = "quad")]
580 QUAD: crate::QUAD,
581 #[cfg(feature = "spi")]
582 SPI: crate::SPI,
583 #[cfg(feature = "spi2")]
584 SPI2: crate::SPI2,
585 #[cfg(feature = "timer1")]
586 TIMER1: crate::TIMER1,
587 #[cfg(feature = "trng")]
588 TRNG: crate::TRNG,
589 #[cfg(feature = "uart")]
590 UART: crate::UART,
591 #[cfg(feature = "uart2")]
592 UART2: crate::UART2,
593 #[cfg(feature = "usb")]
594 USB: crate::USB,
595 #[cfg(feature = "wakeup")]
596 WAKEUP: crate::WAKEUP,
597 #[cfg(feature = "wdog")]
598 WDOG: crate::WDOG,
599 }
600 }
601}