#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RORegister, RWRegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod ISER0 {
pub mod SETENA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ISER1 {
pub use super::ISER0::SETENA;
}
pub mod ISER2 {
pub use super::ISER0::SETENA;
}
pub mod ISER3 {
pub use super::ISER0::SETENA;
}
pub mod ICER0 {
pub mod CLRENA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ICER1 {
pub use super::ICER0::CLRENA;
}
pub mod ICER2 {
pub use super::ICER0::CLRENA;
}
pub mod ICER3 {
pub use super::ICER0::CLRENA;
}
pub mod ISPR0 {
pub mod SETPEND {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ISPR1 {
pub use super::ISPR0::SETPEND;
}
pub mod ISPR2 {
pub use super::ISPR0::SETPEND;
}
pub mod ISPR3 {
pub use super::ISPR0::SETPEND;
}
pub mod ICPR0 {
pub mod CLRPEND {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ICPR1 {
pub use super::ICPR0::CLRPEND;
}
pub mod ICPR2 {
pub use super::ICPR0::CLRPEND;
}
pub mod ICPR3 {
pub use super::ICPR0::CLRPEND;
}
pub mod IABR0 {
pub mod ACTIVE {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod IABR1 {
pub use super::IABR0::ACTIVE;
}
pub mod IABR2 {
pub use super::IABR0::ACTIVE;
}
pub mod IABR3 {
pub use super::IABR0::ACTIVE;
}
pub mod IPR0 {
pub mod IPR_N0 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IPR_N1 {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IPR_N2 {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IPR_N3 {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod IPR1 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR2 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR3 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR4 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR5 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR6 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR7 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR8 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR9 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR10 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR11 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR12 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR13 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR14 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR15 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR16 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR17 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR18 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR19 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR20 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR21 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR22 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR23 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR24 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR25 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR26 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR27 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR28 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR29 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR30 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR31 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR32 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR33 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR34 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR35 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR36 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR37 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod IPR38 {
pub use super::IPR0::IPR_N0;
pub use super::IPR0::IPR_N1;
pub use super::IPR0::IPR_N2;
pub use super::IPR0::IPR_N3;
}
pub mod ISER4 {}
pub mod ICER4 {}
pub mod ISPR4 {}
pub mod ICPR4 {}
pub mod IABR4 {}
#[repr(C)]
pub struct RegisterBlock {
pub ISER0: RWRegister<u32>,
pub ISER1: RWRegister<u32>,
pub ISER2: RWRegister<u32>,
pub ISER3: RWRegister<u32>,
pub ISER4: RWRegister<u32>,
_reserved1: [u32; 27],
pub ICER0: RWRegister<u32>,
pub ICER1: RWRegister<u32>,
pub ICER2: RWRegister<u32>,
pub ICER3: RWRegister<u32>,
pub ICER4: RWRegister<u32>,
_reserved2: [u32; 27],
pub ISPR0: RWRegister<u32>,
pub ISPR1: RWRegister<u32>,
pub ISPR2: RWRegister<u32>,
pub ISPR3: RWRegister<u32>,
pub ISPR4: RWRegister<u32>,
_reserved3: [u32; 27],
pub ICPR0: RWRegister<u32>,
pub ICPR1: RWRegister<u32>,
pub ICPR2: RWRegister<u32>,
pub ICPR3: RWRegister<u32>,
_reserved4: [u32; 13],
pub ICPR4: RWRegister<u32>,
_reserved5: [u32; 14],
pub IABR0: RORegister<u32>,
pub IABR1: RORegister<u32>,
pub IABR2: RORegister<u32>,
pub IABR3: RORegister<u32>,
pub IABR4: RWRegister<u32>,
_reserved6: [u32; 59],
pub IPR0: RWRegister<u32>,
pub IPR1: RWRegister<u32>,
pub IPR2: RWRegister<u32>,
pub IPR3: RWRegister<u32>,
pub IPR4: RWRegister<u32>,
pub IPR5: RWRegister<u32>,
pub IPR6: RWRegister<u32>,
pub IPR7: RWRegister<u32>,
pub IPR8: RWRegister<u32>,
pub IPR9: RWRegister<u32>,
pub IPR10: RWRegister<u32>,
pub IPR11: RWRegister<u32>,
pub IPR12: RWRegister<u32>,
pub IPR13: RWRegister<u32>,
pub IPR14: RWRegister<u32>,
pub IPR15: RWRegister<u32>,
pub IPR16: RWRegister<u32>,
pub IPR17: RWRegister<u32>,
pub IPR18: RWRegister<u32>,
pub IPR19: RWRegister<u32>,
pub IPR20: RWRegister<u32>,
pub IPR21: RWRegister<u32>,
pub IPR22: RWRegister<u32>,
pub IPR23: RWRegister<u32>,
pub IPR24: RWRegister<u32>,
pub IPR25: RWRegister<u32>,
pub IPR26: RWRegister<u32>,
pub IPR27: RWRegister<u32>,
pub IPR28: RWRegister<u32>,
pub IPR29: RWRegister<u32>,
pub IPR30: RWRegister<u32>,
pub IPR31: RWRegister<u32>,
pub IPR32: RWRegister<u32>,
pub IPR33: RWRegister<u32>,
pub IPR34: RWRegister<u32>,
pub IPR35: RWRegister<u32>,
pub IPR36: RWRegister<u32>,
pub IPR37: RWRegister<u32>,
pub IPR38: RWRegister<u32>,
}
pub struct ResetValues {
pub ISER0: u32,
pub ISER1: u32,
pub ISER2: u32,
pub ISER3: u32,
pub ISER4: u32,
pub ICER0: u32,
pub ICER1: u32,
pub ICER2: u32,
pub ICER3: u32,
pub ICER4: u32,
pub ISPR0: u32,
pub ISPR1: u32,
pub ISPR2: u32,
pub ISPR3: u32,
pub ISPR4: u32,
pub ICPR0: u32,
pub ICPR1: u32,
pub ICPR2: u32,
pub ICPR3: u32,
pub ICPR4: u32,
pub IABR0: u32,
pub IABR1: u32,
pub IABR2: u32,
pub IABR3: u32,
pub IABR4: u32,
pub IPR0: u32,
pub IPR1: u32,
pub IPR2: u32,
pub IPR3: u32,
pub IPR4: u32,
pub IPR5: u32,
pub IPR6: u32,
pub IPR7: u32,
pub IPR8: u32,
pub IPR9: u32,
pub IPR10: u32,
pub IPR11: u32,
pub IPR12: u32,
pub IPR13: u32,
pub IPR14: u32,
pub IPR15: u32,
pub IPR16: u32,
pub IPR17: u32,
pub IPR18: u32,
pub IPR19: u32,
pub IPR20: u32,
pub IPR21: u32,
pub IPR22: u32,
pub IPR23: u32,
pub IPR24: u32,
pub IPR25: u32,
pub IPR26: u32,
pub IPR27: u32,
pub IPR28: u32,
pub IPR29: u32,
pub IPR30: u32,
pub IPR31: u32,
pub IPR32: u32,
pub IPR33: u32,
pub IPR34: u32,
pub IPR35: u32,
pub IPR36: u32,
pub IPR37: u32,
pub IPR38: u32,
}
#[cfg(not(feature = "nosync"))]
pub struct Instance {
pub(crate) addr: u32,
pub(crate) _marker: PhantomData<*const RegisterBlock>,
}
#[cfg(not(feature = "nosync"))]
impl ::core::ops::Deref for Instance {
type Target = RegisterBlock;
#[inline(always)]
fn deref(&self) -> &RegisterBlock {
unsafe { &*(self.addr as *const _) }
}
}
#[cfg(feature = "rtic")]
unsafe impl Send for Instance {}
pub mod NVIC {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0xe000e100,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
ISER0: 0x00000000,
ISER1: 0x00000000,
ISER2: 0x00000000,
ISER3: 0x00000000,
ICER0: 0x00000000,
ICER1: 0x00000000,
ICER2: 0x00000000,
ICER3: 0x00000000,
ISPR0: 0x00000000,
ISPR1: 0x00000000,
ISPR2: 0x00000000,
ISPR3: 0x00000000,
ICPR0: 0x00000000,
ICPR1: 0x00000000,
ICPR2: 0x00000000,
ICPR3: 0x00000000,
IABR0: 0x00000000,
IABR1: 0x00000000,
IABR2: 0x00000000,
IABR3: 0x00000000,
IPR0: 0x00000000,
IPR1: 0x00000000,
IPR2: 0x00000000,
IPR3: 0x00000000,
IPR4: 0x00000000,
IPR5: 0x00000000,
IPR6: 0x00000000,
IPR7: 0x00000000,
IPR8: 0x00000000,
IPR9: 0x00000000,
IPR10: 0x00000000,
IPR11: 0x00000000,
IPR12: 0x00000000,
IPR13: 0x00000000,
IPR14: 0x00000000,
IPR15: 0x00000000,
IPR16: 0x00000000,
IPR17: 0x00000000,
IPR18: 0x00000000,
IPR19: 0x00000000,
IPR20: 0x00000000,
IPR21: 0x00000000,
IPR22: 0x00000000,
IPR23: 0x00000000,
IPR24: 0x00000000,
IPR25: 0x00000000,
IPR26: 0x00000000,
IPR27: 0x00000000,
IPR28: 0x00000000,
IPR29: 0x00000000,
IPR30: 0x00000000,
IPR31: 0x00000000,
IPR32: 0x00000000,
IPR33: 0x00000000,
IPR34: 0x00000000,
IPR35: 0x00000000,
IPR36: 0x00000000,
IPR37: 0x00000000,
IPR38: 0x00000000,
ISER4: 0x00000000,
ICER4: 0x00000000,
ISPR4: 0x00000000,
ICPR4: 0x00000000,
IABR4: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut NVIC_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if NVIC_TAKEN {
None
} else {
NVIC_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if NVIC_TAKEN && inst.addr == INSTANCE.addr {
NVIC_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
NVIC_TAKEN = true;
INSTANCE
}
}
pub const NVIC: *const RegisterBlock = 0xe000e100 as *const _;