#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::RWRegister;
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod CR0 {
pub mod HYSTCTR {
pub const offset: u8 = 0;
pub const mask: u8 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const HYSTCTR_0: u8 = 0b00;
pub const HYSTCTR_1: u8 = 0b01;
pub const HYSTCTR_2: u8 = 0b10;
pub const HYSTCTR_3: u8 = 0b11;
}
}
pub mod FILTER_CNT {
pub const offset: u8 = 4;
pub const mask: u8 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const FILTER_CNT_0: u8 = 0b000;
pub const FILTER_CNT_1: u8 = 0b001;
pub const FILTER_CNT_2: u8 = 0b010;
pub const FILTER_CNT_3: u8 = 0b011;
pub const FILTER_CNT_4: u8 = 0b100;
pub const FILTER_CNT_5: u8 = 0b101;
pub const FILTER_CNT_6: u8 = 0b110;
pub const FILTER_CNT_7: u8 = 0b111;
}
}
}
pub mod CR1 {
pub mod EN {
pub const offset: u8 = 0;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const EN_0: u8 = 0b0;
pub const EN_1: u8 = 0b1;
}
}
pub mod OPE {
pub const offset: u8 = 1;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const OPE_0: u8 = 0b0;
pub const OPE_1: u8 = 0b1;
}
}
pub mod COS {
pub const offset: u8 = 2;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const COS_0: u8 = 0b0;
pub const COS_1: u8 = 0b1;
}
}
pub mod INV {
pub const offset: u8 = 3;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const INV_0: u8 = 0b0;
pub const INV_1: u8 = 0b1;
}
}
pub mod PMODE {
pub const offset: u8 = 4;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const PMODE_0: u8 = 0b0;
pub const PMODE_1: u8 = 0b1;
}
}
pub mod WE {
pub const offset: u8 = 6;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const WE_0: u8 = 0b0;
pub const WE_1: u8 = 0b1;
}
}
pub mod SE {
pub const offset: u8 = 7;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SE_0: u8 = 0b0;
pub const SE_1: u8 = 0b1;
}
}
}
pub mod FPR {
pub mod FILT_PER {
pub const offset: u8 = 0;
pub const mask: u8 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SCR {
pub mod COUT {
pub const offset: u8 = 0;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CFF {
pub const offset: u8 = 1;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CFF_0: u8 = 0b0;
pub const CFF_1: u8 = 0b1;
}
}
pub mod CFR {
pub const offset: u8 = 2;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CFR_0: u8 = 0b0;
pub const CFR_1: u8 = 0b1;
}
}
pub mod IEF {
pub const offset: u8 = 3;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const IEF_0: u8 = 0b0;
pub const IEF_1: u8 = 0b1;
}
}
pub mod IER {
pub const offset: u8 = 4;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const IER_0: u8 = 0b0;
pub const IER_1: u8 = 0b1;
}
}
pub mod DMAEN {
pub const offset: u8 = 6;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DMAEN_0: u8 = 0b0;
pub const DMAEN_1: u8 = 0b1;
}
}
}
pub mod DACCR {
pub mod VOSEL {
pub const offset: u8 = 0;
pub const mask: u8 = 0x3f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod VRSEL {
pub const offset: u8 = 6;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const VRSEL_0: u8 = 0b0;
pub const VRSEL_1: u8 = 0b1;
}
}
pub mod DACEN {
pub const offset: u8 = 7;
pub const mask: u8 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DACEN_0: u8 = 0b0;
pub const DACEN_1: u8 = 0b1;
}
}
}
pub mod MUXCR {
pub mod MSEL {
pub const offset: u8 = 0;
pub const mask: u8 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const MSEL_0: u8 = 0b000;
pub const MSEL_1: u8 = 0b001;
pub const MSEL_2: u8 = 0b010;
pub const MSEL_3: u8 = 0b011;
pub const MSEL_4: u8 = 0b100;
pub const MSEL_5: u8 = 0b101;
pub const MSEL_6: u8 = 0b110;
pub const MSEL_7: u8 = 0b111;
}
}
pub mod PSEL {
pub const offset: u8 = 3;
pub const mask: u8 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const PSEL_0: u8 = 0b000;
pub const PSEL_1: u8 = 0b001;
pub const PSEL_2: u8 = 0b010;
pub const PSEL_3: u8 = 0b011;
pub const PSEL_4: u8 = 0b100;
pub const PSEL_5: u8 = 0b101;
pub const PSEL_6: u8 = 0b110;
pub const PSEL_7: u8 = 0b111;
}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub CR0: RWRegister<u8>,
pub CR1: RWRegister<u8>,
pub FPR: RWRegister<u8>,
pub SCR: RWRegister<u8>,
pub DACCR: RWRegister<u8>,
pub MUXCR: RWRegister<u8>,
}
pub struct ResetValues {
pub CR0: u8,
pub CR1: u8,
pub FPR: u8,
pub SCR: u8,
pub DACCR: u8,
pub MUXCR: u8,
}
#[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 = "rtfm")]
unsafe impl Send for Instance {}
pub mod CMP1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40094000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR0: 0x00000000,
CR1: 0x00000000,
FPR: 0x00000000,
SCR: 0x00000000,
DACCR: 0x00000000,
MUXCR: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut CMP1_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP1_TAKEN {
None
} else {
CMP1_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP1_TAKEN && inst.addr == INSTANCE.addr {
CMP1_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
CMP1_TAKEN = true;
INSTANCE
}
}
pub const CMP1: *const RegisterBlock = 0x40094000 as *const _;
pub mod CMP2 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40094008,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR0: 0x00000000,
CR1: 0x00000000,
FPR: 0x00000000,
SCR: 0x00000000,
DACCR: 0x00000000,
MUXCR: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut CMP2_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP2_TAKEN {
None
} else {
CMP2_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP2_TAKEN && inst.addr == INSTANCE.addr {
CMP2_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
CMP2_TAKEN = true;
INSTANCE
}
}
pub const CMP2: *const RegisterBlock = 0x40094008 as *const _;
pub mod CMP3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40094010,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR0: 0x00000000,
CR1: 0x00000000,
FPR: 0x00000000,
SCR: 0x00000000,
DACCR: 0x00000000,
MUXCR: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut CMP3_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP3_TAKEN {
None
} else {
CMP3_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP3_TAKEN && inst.addr == INSTANCE.addr {
CMP3_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
CMP3_TAKEN = true;
INSTANCE
}
}
pub const CMP3: *const RegisterBlock = 0x40094010 as *const _;
pub mod CMP4 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40094018,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR0: 0x00000000,
CR1: 0x00000000,
FPR: 0x00000000,
SCR: 0x00000000,
DACCR: 0x00000000,
MUXCR: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut CMP4_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP4_TAKEN {
None
} else {
CMP4_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if CMP4_TAKEN && inst.addr == INSTANCE.addr {
CMP4_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
CMP4_TAKEN = true;
INSTANCE
}
}
pub const CMP4: *const RegisterBlock = 0x40094018 as *const _;