#![doc = "Peripheral access API for EFM32WG230F128 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]
svd2rust 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"]
#![deny(const_err)]
#![deny(dead_code)]
#![deny(improper_ctypes)]
#![deny(missing_docs)]
#![deny(no_mangle_generic_items)]
#![deny(non_shorthand_field_patterns)]
#![deny(overflowing_literals)]
#![deny(path_statements)]
#![deny(patterns_in_fns_without_body)]
#![deny(private_in_public)]
#![deny(unconditional_recursion)]
#![deny(unused_allocation)]
#![deny(unused_comparisons)]
#![deny(unused_parens)]
#![deny(while_true)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![no_std]
use core::marker::PhantomData;
use core::ops::Deref;
#[doc = r"Number available in the NVIC for configuring priority"]
pub const NVIC_PRIO_BITS: u8 = 3;
#[cfg(feature = "rt")]
pub use self::Interrupt as interrupt;
pub use cortex_m::peripheral::Peripherals as CorePeripherals;
pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, FPU, ITM, MPU, NVIC, SCB, SYST, TPIU};
#[cfg(feature = "rt")]
pub use cortex_m_rt::interrupt;
#[allow(unused_imports)]
use generic::*;
#[doc = r"Common register and bit access and modify traits"]
pub mod generic;
#[cfg(feature = "rt")]
extern "C" {
fn DMA();
fn GPIO_EVEN();
fn TIMER0();
fn USART0_RX();
fn USART0_TX();
fn ACMP0();
fn ADC0();
fn DAC0();
fn I2C0();
fn I2C1();
fn GPIO_ODD();
fn TIMER1();
fn TIMER2();
fn TIMER3();
fn USART1_RX();
fn USART1_TX();
fn LESENSE();
fn USART2_RX();
fn USART2_TX();
fn LEUART0();
fn LEUART1();
fn LETIMER0();
fn PCNT0();
fn PCNT1();
fn PCNT2();
fn RTC();
fn BURTC();
fn CMU();
fn VCMP();
fn MSC();
fn AES();
fn EMU();
fn FPUEH();
}
#[doc(hidden)]
pub union Vector {
_handler: unsafe extern "C" fn(),
_reserved: u32,
}
#[cfg(feature = "rt")]
#[doc(hidden)]
#[link_section = ".vector_table.interrupts"]
#[no_mangle]
pub static __INTERRUPTS: [Vector; 40] = [
Vector { _handler: DMA },
Vector {
_handler: GPIO_EVEN,
},
Vector { _handler: TIMER0 },
Vector {
_handler: USART0_RX,
},
Vector {
_handler: USART0_TX,
},
Vector { _reserved: 0 },
Vector { _handler: ACMP0 },
Vector { _handler: ADC0 },
Vector { _handler: DAC0 },
Vector { _handler: I2C0 },
Vector { _handler: I2C1 },
Vector { _handler: GPIO_ODD },
Vector { _handler: TIMER1 },
Vector { _handler: TIMER2 },
Vector { _handler: TIMER3 },
Vector {
_handler: USART1_RX,
},
Vector {
_handler: USART1_TX,
},
Vector { _handler: LESENSE },
Vector {
_handler: USART2_RX,
},
Vector {
_handler: USART2_TX,
},
Vector { _reserved: 0 },
Vector { _reserved: 0 },
Vector { _reserved: 0 },
Vector { _reserved: 0 },
Vector { _handler: LEUART0 },
Vector { _handler: LEUART1 },
Vector { _handler: LETIMER0 },
Vector { _handler: PCNT0 },
Vector { _handler: PCNT1 },
Vector { _handler: PCNT2 },
Vector { _handler: RTC },
Vector { _handler: BURTC },
Vector { _handler: CMU },
Vector { _handler: VCMP },
Vector { _reserved: 0 },
Vector { _handler: MSC },
Vector { _handler: AES },
Vector { _reserved: 0 },
Vector { _handler: EMU },
Vector { _handler: FPUEH },
];
#[doc = r"Enumeration of all the interrupts."]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
#[repr(u16)]
pub enum Interrupt {
#[doc = "0 - DMA"]
DMA = 0,
#[doc = "1 - GPIO_EVEN"]
GPIO_EVEN = 1,
#[doc = "2 - TIMER0"]
TIMER0 = 2,
#[doc = "3 - USART0_RX"]
USART0_RX = 3,
#[doc = "4 - USART0_TX"]
USART0_TX = 4,
#[doc = "6 - ACMP0"]
ACMP0 = 6,
#[doc = "7 - ADC0"]
ADC0 = 7,
#[doc = "8 - DAC0"]
DAC0 = 8,
#[doc = "9 - I2C0"]
I2C0 = 9,
#[doc = "10 - I2C1"]
I2C1 = 10,
#[doc = "11 - GPIO_ODD"]
GPIO_ODD = 11,
#[doc = "12 - TIMER1"]
TIMER1 = 12,
#[doc = "13 - TIMER2"]
TIMER2 = 13,
#[doc = "14 - TIMER3"]
TIMER3 = 14,
#[doc = "15 - USART1_RX"]
USART1_RX = 15,
#[doc = "16 - USART1_TX"]
USART1_TX = 16,
#[doc = "17 - LESENSE"]
LESENSE = 17,
#[doc = "18 - USART2_RX"]
USART2_RX = 18,
#[doc = "19 - USART2_TX"]
USART2_TX = 19,
#[doc = "24 - LEUART0"]
LEUART0 = 24,
#[doc = "25 - LEUART1"]
LEUART1 = 25,
#[doc = "26 - LETIMER0"]
LETIMER0 = 26,
#[doc = "27 - PCNT0"]
PCNT0 = 27,
#[doc = "28 - PCNT1"]
PCNT1 = 28,
#[doc = "29 - PCNT2"]
PCNT2 = 29,
#[doc = "30 - RTC"]
RTC = 30,
#[doc = "31 - BURTC"]
BURTC = 31,
#[doc = "32 - CMU"]
CMU = 32,
#[doc = "33 - VCMP"]
VCMP = 33,
#[doc = "35 - MSC"]
MSC = 35,
#[doc = "36 - AES"]
AES = 36,
#[doc = "38 - EMU"]
EMU = 38,
#[doc = "39 - FPUEH"]
FPUEH = 39,
}
unsafe impl cortex_m::interrupt::InterruptNumber for Interrupt {
#[inline(always)]
fn number(self) -> u16 {
self as u16
}
}
#[doc = "DMA"]
pub struct DMA {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for DMA {}
impl DMA {
#[doc = r"Pointer to the register block"]
pub const PTR: *const dma::RegisterBlock = 0x400c_2000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const dma::RegisterBlock {
Self::PTR
}
}
impl Deref for DMA {
type Target = dma::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for DMA {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("DMA").finish()
}
}
#[doc = "DMA"]
pub mod dma;
#[doc = "AES"]
pub struct AES {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for AES {}
impl AES {
#[doc = r"Pointer to the register block"]
pub const PTR: *const aes::RegisterBlock = 0x400e_0000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const aes::RegisterBlock {
Self::PTR
}
}
impl Deref for AES {
type Target = aes::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for AES {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("AES").finish()
}
}
#[doc = "AES"]
pub mod aes;
#[doc = "MSC"]
pub struct MSC {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for MSC {}
impl MSC {
#[doc = r"Pointer to the register block"]
pub const PTR: *const msc::RegisterBlock = 0x400c_0000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const msc::RegisterBlock {
Self::PTR
}
}
impl Deref for MSC {
type Target = msc::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for MSC {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("MSC").finish()
}
}
#[doc = "MSC"]
pub mod msc;
#[doc = "EMU"]
pub struct EMU {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for EMU {}
impl EMU {
#[doc = r"Pointer to the register block"]
pub const PTR: *const emu::RegisterBlock = 0x400c_6000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const emu::RegisterBlock {
Self::PTR
}
}
impl Deref for EMU {
type Target = emu::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for EMU {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("EMU").finish()
}
}
#[doc = "EMU"]
pub mod emu;
#[doc = "RMU"]
pub struct RMU {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for RMU {}
impl RMU {
#[doc = r"Pointer to the register block"]
pub const PTR: *const rmu::RegisterBlock = 0x400c_a000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const rmu::RegisterBlock {
Self::PTR
}
}
impl Deref for RMU {
type Target = rmu::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for RMU {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("RMU").finish()
}
}
#[doc = "RMU"]
pub mod rmu;
#[doc = "CMU"]
pub struct CMU {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for CMU {}
impl CMU {
#[doc = r"Pointer to the register block"]
pub const PTR: *const cmu::RegisterBlock = 0x400c_8000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const cmu::RegisterBlock {
Self::PTR
}
}
impl Deref for CMU {
type Target = cmu::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for CMU {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("CMU").finish()
}
}
#[doc = "CMU"]
pub mod cmu;
#[doc = "LESENSE"]
pub struct LESENSE {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for LESENSE {}
impl LESENSE {
#[doc = r"Pointer to the register block"]
pub const PTR: *const lesense::RegisterBlock = 0x4008_c000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const lesense::RegisterBlock {
Self::PTR
}
}
impl Deref for LESENSE {
type Target = lesense::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for LESENSE {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("LESENSE").finish()
}
}
#[doc = "LESENSE"]
pub mod lesense;
#[doc = "FPUEH"]
pub struct FPUEH {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for FPUEH {}
impl FPUEH {
#[doc = r"Pointer to the register block"]
pub const PTR: *const fpueh::RegisterBlock = 0x400c_1c00 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const fpueh::RegisterBlock {
Self::PTR
}
}
impl Deref for FPUEH {
type Target = fpueh::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for FPUEH {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("FPUEH").finish()
}
}
#[doc = "FPUEH"]
pub mod fpueh;
#[doc = "USART0"]
pub struct USART0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for USART0 {}
impl USART0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const usart0::RegisterBlock = 0x4000_c000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const usart0::RegisterBlock {
Self::PTR
}
}
impl Deref for USART0 {
type Target = usart0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for USART0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("USART0").finish()
}
}
#[doc = "USART0"]
pub mod usart0;
#[doc = "USART1"]
pub struct USART1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for USART1 {}
impl USART1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const usart1::RegisterBlock = 0x4000_c400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const usart1::RegisterBlock {
Self::PTR
}
}
impl Deref for USART1 {
type Target = usart1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for USART1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("USART1").finish()
}
}
#[doc = "USART1"]
pub mod usart1;
#[doc = "USART2"]
pub struct USART2 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for USART2 {}
impl USART2 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const usart2::RegisterBlock = 0x4000_c800 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const usart2::RegisterBlock {
Self::PTR
}
}
impl Deref for USART2 {
type Target = usart2::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for USART2 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("USART2").finish()
}
}
#[doc = "USART2"]
pub mod usart2;
#[doc = "TIMER0"]
pub struct TIMER0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for TIMER0 {}
impl TIMER0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const timer0::RegisterBlock = 0x4001_0000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const timer0::RegisterBlock {
Self::PTR
}
}
impl Deref for TIMER0 {
type Target = timer0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for TIMER0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("TIMER0").finish()
}
}
#[doc = "TIMER0"]
pub mod timer0;
#[doc = "TIMER1"]
pub struct TIMER1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for TIMER1 {}
impl TIMER1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const timer1::RegisterBlock = 0x4001_0400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const timer1::RegisterBlock {
Self::PTR
}
}
impl Deref for TIMER1 {
type Target = timer1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for TIMER1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("TIMER1").finish()
}
}
#[doc = "TIMER1"]
pub mod timer1;
#[doc = "TIMER2"]
pub struct TIMER2 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for TIMER2 {}
impl TIMER2 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const timer2::RegisterBlock = 0x4001_0800 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const timer2::RegisterBlock {
Self::PTR
}
}
impl Deref for TIMER2 {
type Target = timer2::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for TIMER2 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("TIMER2").finish()
}
}
#[doc = "TIMER2"]
pub mod timer2;
#[doc = "TIMER3"]
pub struct TIMER3 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for TIMER3 {}
impl TIMER3 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const timer3::RegisterBlock = 0x4001_0c00 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const timer3::RegisterBlock {
Self::PTR
}
}
impl Deref for TIMER3 {
type Target = timer3::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for TIMER3 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("TIMER3").finish()
}
}
#[doc = "TIMER3"]
pub mod timer3;
#[doc = "ACMP0"]
pub struct ACMP0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for ACMP0 {}
impl ACMP0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const acmp0::RegisterBlock = 0x4000_1000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const acmp0::RegisterBlock {
Self::PTR
}
}
impl Deref for ACMP0 {
type Target = acmp0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for ACMP0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("ACMP0").finish()
}
}
#[doc = "ACMP0"]
pub mod acmp0;
#[doc = "ACMP1"]
pub struct ACMP1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for ACMP1 {}
impl ACMP1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const acmp1::RegisterBlock = 0x4000_1400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const acmp1::RegisterBlock {
Self::PTR
}
}
impl Deref for ACMP1 {
type Target = acmp1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for ACMP1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("ACMP1").finish()
}
}
#[doc = "ACMP1"]
pub mod acmp1;
#[doc = "LEUART0"]
pub struct LEUART0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for LEUART0 {}
impl LEUART0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const leuart0::RegisterBlock = 0x4008_4000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const leuart0::RegisterBlock {
Self::PTR
}
}
impl Deref for LEUART0 {
type Target = leuart0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for LEUART0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("LEUART0").finish()
}
}
#[doc = "LEUART0"]
pub mod leuart0;
#[doc = "LEUART1"]
pub struct LEUART1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for LEUART1 {}
impl LEUART1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const leuart1::RegisterBlock = 0x4008_4400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const leuart1::RegisterBlock {
Self::PTR
}
}
impl Deref for LEUART1 {
type Target = leuart1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for LEUART1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("LEUART1").finish()
}
}
#[doc = "LEUART1"]
pub mod leuart1;
#[doc = "RTC"]
pub struct RTC {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for RTC {}
impl RTC {
#[doc = r"Pointer to the register block"]
pub const PTR: *const rtc::RegisterBlock = 0x4008_0000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const rtc::RegisterBlock {
Self::PTR
}
}
impl Deref for RTC {
type Target = rtc::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for RTC {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("RTC").finish()
}
}
#[doc = "RTC"]
pub mod rtc;
#[doc = "LETIMER0"]
pub struct LETIMER0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for LETIMER0 {}
impl LETIMER0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const letimer0::RegisterBlock = 0x4008_2000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const letimer0::RegisterBlock {
Self::PTR
}
}
impl Deref for LETIMER0 {
type Target = letimer0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for LETIMER0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("LETIMER0").finish()
}
}
#[doc = "LETIMER0"]
pub mod letimer0;
#[doc = "PCNT0"]
pub struct PCNT0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for PCNT0 {}
impl PCNT0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const pcnt0::RegisterBlock = 0x4008_6000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const pcnt0::RegisterBlock {
Self::PTR
}
}
impl Deref for PCNT0 {
type Target = pcnt0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for PCNT0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("PCNT0").finish()
}
}
#[doc = "PCNT0"]
pub mod pcnt0;
#[doc = "PCNT1"]
pub struct PCNT1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for PCNT1 {}
impl PCNT1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const pcnt1::RegisterBlock = 0x4008_6400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const pcnt1::RegisterBlock {
Self::PTR
}
}
impl Deref for PCNT1 {
type Target = pcnt1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for PCNT1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("PCNT1").finish()
}
}
#[doc = "PCNT1"]
pub mod pcnt1;
#[doc = "PCNT2"]
pub struct PCNT2 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for PCNT2 {}
impl PCNT2 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const pcnt2::RegisterBlock = 0x4008_6800 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const pcnt2::RegisterBlock {
Self::PTR
}
}
impl Deref for PCNT2 {
type Target = pcnt2::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for PCNT2 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("PCNT2").finish()
}
}
#[doc = "PCNT2"]
pub mod pcnt2;
#[doc = "I2C0"]
pub struct I2C0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for I2C0 {}
impl I2C0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const i2c0::RegisterBlock = 0x4000_a000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const i2c0::RegisterBlock {
Self::PTR
}
}
impl Deref for I2C0 {
type Target = i2c0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for I2C0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("I2C0").finish()
}
}
#[doc = "I2C0"]
pub mod i2c0;
#[doc = "I2C1"]
pub struct I2C1 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for I2C1 {}
impl I2C1 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const i2c1::RegisterBlock = 0x4000_a400 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const i2c1::RegisterBlock {
Self::PTR
}
}
impl Deref for I2C1 {
type Target = i2c1::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for I2C1 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("I2C1").finish()
}
}
#[doc = "I2C1"]
pub mod i2c1;
#[doc = "GPIO"]
pub struct GPIO {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for GPIO {}
impl GPIO {
#[doc = r"Pointer to the register block"]
pub const PTR: *const gpio::RegisterBlock = 0x4000_6000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const gpio::RegisterBlock {
Self::PTR
}
}
impl Deref for GPIO {
type Target = gpio::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for GPIO {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("GPIO").finish()
}
}
#[doc = "GPIO"]
pub mod gpio;
#[doc = "VCMP"]
pub struct VCMP {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for VCMP {}
impl VCMP {
#[doc = r"Pointer to the register block"]
pub const PTR: *const vcmp::RegisterBlock = 0x4000_0000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const vcmp::RegisterBlock {
Self::PTR
}
}
impl Deref for VCMP {
type Target = vcmp::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for VCMP {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("VCMP").finish()
}
}
#[doc = "VCMP"]
pub mod vcmp;
#[doc = "PRS"]
pub struct PRS {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for PRS {}
impl PRS {
#[doc = r"Pointer to the register block"]
pub const PTR: *const prs::RegisterBlock = 0x400c_c000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const prs::RegisterBlock {
Self::PTR
}
}
impl Deref for PRS {
type Target = prs::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for PRS {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("PRS").finish()
}
}
#[doc = "PRS"]
pub mod prs;
#[doc = "ADC0"]
pub struct ADC0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for ADC0 {}
impl ADC0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const adc0::RegisterBlock = 0x4000_2000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const adc0::RegisterBlock {
Self::PTR
}
}
impl Deref for ADC0 {
type Target = adc0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for ADC0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("ADC0").finish()
}
}
#[doc = "ADC0"]
pub mod adc0;
#[doc = "DAC0"]
pub struct DAC0 {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for DAC0 {}
impl DAC0 {
#[doc = r"Pointer to the register block"]
pub const PTR: *const dac0::RegisterBlock = 0x4000_4000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const dac0::RegisterBlock {
Self::PTR
}
}
impl Deref for DAC0 {
type Target = dac0::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for DAC0 {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("DAC0").finish()
}
}
#[doc = "DAC0"]
pub mod dac0;
#[doc = "BURTC"]
pub struct BURTC {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for BURTC {}
impl BURTC {
#[doc = r"Pointer to the register block"]
pub const PTR: *const burtc::RegisterBlock = 0x4008_1000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const burtc::RegisterBlock {
Self::PTR
}
}
impl Deref for BURTC {
type Target = burtc::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for BURTC {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("BURTC").finish()
}
}
#[doc = "BURTC"]
pub mod burtc;
#[doc = "WDOG"]
pub struct WDOG {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for WDOG {}
impl WDOG {
#[doc = r"Pointer to the register block"]
pub const PTR: *const wdog::RegisterBlock = 0x4008_8000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const wdog::RegisterBlock {
Self::PTR
}
}
impl Deref for WDOG {
type Target = wdog::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for WDOG {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("WDOG").finish()
}
}
#[doc = "WDOG"]
pub mod wdog;
#[doc = "ETM"]
pub struct ETM {
_marker: PhantomData<*const ()>,
}
unsafe impl Send for ETM {}
impl ETM {
#[doc = r"Pointer to the register block"]
pub const PTR: *const etm::RegisterBlock = 0xe004_1000 as *const _;
#[doc = r"Return the pointer to the register block"]
#[inline(always)]
pub const fn ptr() -> *const etm::RegisterBlock {
Self::PTR
}
}
impl Deref for ETM {
type Target = etm::RegisterBlock;
#[inline(always)]
fn deref(&self) -> &Self::Target {
unsafe { &*Self::PTR }
}
}
impl core::fmt::Debug for ETM {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
f.debug_struct("ETM").finish()
}
}
#[doc = "ETM"]
pub mod etm;
#[no_mangle]
static mut DEVICE_PERIPHERALS: bool = false;
#[doc = r"All the peripherals"]
#[allow(non_snake_case)]
pub struct Peripherals {
#[doc = "DMA"]
pub DMA: DMA,
#[doc = "AES"]
pub AES: AES,
#[doc = "MSC"]
pub MSC: MSC,
#[doc = "EMU"]
pub EMU: EMU,
#[doc = "RMU"]
pub RMU: RMU,
#[doc = "CMU"]
pub CMU: CMU,
#[doc = "LESENSE"]
pub LESENSE: LESENSE,
#[doc = "FPUEH"]
pub FPUEH: FPUEH,
#[doc = "USART0"]
pub USART0: USART0,
#[doc = "USART1"]
pub USART1: USART1,
#[doc = "USART2"]
pub USART2: USART2,
#[doc = "TIMER0"]
pub TIMER0: TIMER0,
#[doc = "TIMER1"]
pub TIMER1: TIMER1,
#[doc = "TIMER2"]
pub TIMER2: TIMER2,
#[doc = "TIMER3"]
pub TIMER3: TIMER3,
#[doc = "ACMP0"]
pub ACMP0: ACMP0,
#[doc = "ACMP1"]
pub ACMP1: ACMP1,
#[doc = "LEUART0"]
pub LEUART0: LEUART0,
#[doc = "LEUART1"]
pub LEUART1: LEUART1,
#[doc = "RTC"]
pub RTC: RTC,
#[doc = "LETIMER0"]
pub LETIMER0: LETIMER0,
#[doc = "PCNT0"]
pub PCNT0: PCNT0,
#[doc = "PCNT1"]
pub PCNT1: PCNT1,
#[doc = "PCNT2"]
pub PCNT2: PCNT2,
#[doc = "I2C0"]
pub I2C0: I2C0,
#[doc = "I2C1"]
pub I2C1: I2C1,
#[doc = "GPIO"]
pub GPIO: GPIO,
#[doc = "VCMP"]
pub VCMP: VCMP,
#[doc = "PRS"]
pub PRS: PRS,
#[doc = "ADC0"]
pub ADC0: ADC0,
#[doc = "DAC0"]
pub DAC0: DAC0,
#[doc = "BURTC"]
pub BURTC: BURTC,
#[doc = "WDOG"]
pub WDOG: WDOG,
#[doc = "ETM"]
pub ETM: ETM,
}
impl Peripherals {
#[doc = r"Returns all the peripherals *once*"]
#[inline]
pub fn take() -> Option<Self> {
cortex_m::interrupt::free(|_| {
if unsafe { DEVICE_PERIPHERALS } {
None
} else {
Some(unsafe { Peripherals::steal() })
}
})
}
#[doc = r"Unchecked version of `Peripherals::take`"]
#[inline]
pub unsafe fn steal() -> Self {
DEVICE_PERIPHERALS = true;
Peripherals {
DMA: DMA {
_marker: PhantomData,
},
AES: AES {
_marker: PhantomData,
},
MSC: MSC {
_marker: PhantomData,
},
EMU: EMU {
_marker: PhantomData,
},
RMU: RMU {
_marker: PhantomData,
},
CMU: CMU {
_marker: PhantomData,
},
LESENSE: LESENSE {
_marker: PhantomData,
},
FPUEH: FPUEH {
_marker: PhantomData,
},
USART0: USART0 {
_marker: PhantomData,
},
USART1: USART1 {
_marker: PhantomData,
},
USART2: USART2 {
_marker: PhantomData,
},
TIMER0: TIMER0 {
_marker: PhantomData,
},
TIMER1: TIMER1 {
_marker: PhantomData,
},
TIMER2: TIMER2 {
_marker: PhantomData,
},
TIMER3: TIMER3 {
_marker: PhantomData,
},
ACMP0: ACMP0 {
_marker: PhantomData,
},
ACMP1: ACMP1 {
_marker: PhantomData,
},
LEUART0: LEUART0 {
_marker: PhantomData,
},
LEUART1: LEUART1 {
_marker: PhantomData,
},
RTC: RTC {
_marker: PhantomData,
},
LETIMER0: LETIMER0 {
_marker: PhantomData,
},
PCNT0: PCNT0 {
_marker: PhantomData,
},
PCNT1: PCNT1 {
_marker: PhantomData,
},
PCNT2: PCNT2 {
_marker: PhantomData,
},
I2C0: I2C0 {
_marker: PhantomData,
},
I2C1: I2C1 {
_marker: PhantomData,
},
GPIO: GPIO {
_marker: PhantomData,
},
VCMP: VCMP {
_marker: PhantomData,
},
PRS: PRS {
_marker: PhantomData,
},
ADC0: ADC0 {
_marker: PhantomData,
},
DAC0: DAC0 {
_marker: PhantomData,
},
BURTC: BURTC {
_marker: PhantomData,
},
WDOG: WDOG {
_marker: PhantomData,
},
ETM: ETM {
_marker: PhantomData,
},
}
}
}