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