#![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 HC0 {
pub mod ADCH {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADCH_16: u32 = 0b10000;
pub const ADCH_25: u32 = 0b11001;
pub const ADCH_31: u32 = 0b11111;
}
}
pub mod AIEN {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AIEN_0: u32 = 0b0;
pub const AIEN_1: u32 = 0b1;
}
}
}
pub mod HC1 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC2 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC3 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC4 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC5 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC6 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HC7 {
pub use super::HC0::ADCH;
pub use super::HC0::AIEN;
}
pub mod HS {
pub mod COCO0 {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod R0 {
pub mod CDATA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod R1 {
pub use super::R0::CDATA;
}
pub mod R2 {
pub use super::R0::CDATA;
}
pub mod R3 {
pub use super::R0::CDATA;
}
pub mod R4 {
pub use super::R0::CDATA;
}
pub mod R5 {
pub use super::R0::CDATA;
}
pub mod R6 {
pub use super::R0::CDATA;
}
pub mod R7 {
pub use super::R0::CDATA;
}
pub mod CFG {
pub mod ADICLK {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADICLK_0: u32 = 0b00;
pub const ADICLK_1: u32 = 0b01;
pub const ADICLK_3: u32 = 0b11;
}
}
pub mod MODE {
pub const offset: u32 = 2;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const MODE_0: u32 = 0b00;
pub const MODE_1: u32 = 0b01;
pub const MODE_2: u32 = 0b10;
}
}
pub mod ADLSMP {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADLSMP_0: u32 = 0b0;
pub const ADLSMP_1: u32 = 0b1;
}
}
pub mod ADIV {
pub const offset: u32 = 5;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADIV_0: u32 = 0b00;
pub const ADIV_1: u32 = 0b01;
pub const ADIV_2: u32 = 0b10;
pub const ADIV_3: u32 = 0b11;
}
}
pub mod ADLPC {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADLPC_0: u32 = 0b0;
pub const ADLPC_1: u32 = 0b1;
}
}
pub mod ADSTS {
pub const offset: u32 = 8;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADSTS_0: u32 = 0b00;
pub const ADSTS_1: u32 = 0b01;
pub const ADSTS_2: u32 = 0b10;
pub const ADSTS_3: u32 = 0b11;
}
}
pub mod ADHSC {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADHSC_0: u32 = 0b0;
pub const ADHSC_1: u32 = 0b1;
}
}
pub mod REFSEL {
pub const offset: u32 = 11;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const REFSEL_0: u32 = 0b00;
}
}
pub mod ADTRG {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADTRG_0: u32 = 0b0;
pub const ADTRG_1: u32 = 0b1;
}
}
pub mod AVGS {
pub const offset: u32 = 14;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AVGS_0: u32 = 0b00;
pub const AVGS_1: u32 = 0b01;
pub const AVGS_2: u32 = 0b10;
pub const AVGS_3: u32 = 0b11;
}
}
pub mod OVWREN {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const OVWREN_0: u32 = 0b0;
pub const OVWREN_1: u32 = 0b1;
}
}
}
pub mod GC {
pub mod ADACKEN {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADACKEN_0: u32 = 0b0;
pub const ADACKEN_1: u32 = 0b1;
}
}
pub mod DMAEN {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DMAEN_0: u32 = 0b0;
pub const DMAEN_1: u32 = 0b1;
}
}
pub mod ACREN {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ACREN_0: u32 = 0b0;
pub const ACREN_1: u32 = 0b1;
}
}
pub mod ACFGT {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ACFGT_0: u32 = 0b0;
pub const ACFGT_1: u32 = 0b1;
}
}
pub mod ACFE {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ACFE_0: u32 = 0b0;
pub const ACFE_1: u32 = 0b1;
}
}
pub mod AVGE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AVGE_0: u32 = 0b0;
pub const AVGE_1: u32 = 0b1;
}
}
pub mod ADCO {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADCO_0: u32 = 0b0;
pub const ADCO_1: u32 = 0b1;
}
}
pub mod CAL {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod GS {
pub mod ADACT {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ADACT_0: u32 = 0b0;
pub const ADACT_1: u32 = 0b1;
}
}
pub mod CALF {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const CALF_0: u32 = 0b0;
pub const CALF_1: u32 = 0b1;
}
}
pub mod AWKST {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const AWKST_0: u32 = 0b0;
pub const AWKST_1: u32 = 0b1;
}
}
}
pub mod CV {
pub mod CV1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CV2 {
pub const offset: u32 = 16;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod OFS {
pub mod OFS {
pub const offset: u32 = 0;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SIGN {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SIGN_0: u32 = 0b0;
pub const SIGN_1: u32 = 0b1;
}
}
}
pub mod CAL {
pub mod CAL_CODE {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub HC0: RWRegister<u32>,
pub HC1: RWRegister<u32>,
pub HC2: RWRegister<u32>,
pub HC3: RWRegister<u32>,
pub HC4: RWRegister<u32>,
pub HC5: RWRegister<u32>,
pub HC6: RWRegister<u32>,
pub HC7: RWRegister<u32>,
pub HS: RORegister<u32>,
pub R0: RORegister<u32>,
pub R1: RORegister<u32>,
pub R2: RORegister<u32>,
pub R3: RORegister<u32>,
pub R4: RORegister<u32>,
pub R5: RORegister<u32>,
pub R6: RORegister<u32>,
pub R7: RORegister<u32>,
pub CFG: RWRegister<u32>,
pub GC: RWRegister<u32>,
pub GS: RWRegister<u32>,
pub CV: RWRegister<u32>,
pub OFS: RWRegister<u32>,
pub CAL: RWRegister<u32>,
}
pub struct ResetValues {
pub HC0: u32,
pub HC1: u32,
pub HC2: u32,
pub HC3: u32,
pub HC4: u32,
pub HC5: u32,
pub HC6: u32,
pub HC7: u32,
pub HS: u32,
pub R0: u32,
pub R1: u32,
pub R2: u32,
pub R3: u32,
pub R4: u32,
pub R5: u32,
pub R6: u32,
pub R7: u32,
pub CFG: u32,
pub GC: u32,
pub GS: u32,
pub CV: u32,
pub OFS: u32,
pub CAL: 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 = "rtfm")]
unsafe impl Send for Instance {}
pub mod ADC1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x400c4000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
HC0: 0x0000001F,
HC1: 0x0000001F,
HC2: 0x0000001F,
HC3: 0x0000001F,
HC4: 0x0000001F,
HC5: 0x0000001F,
HC6: 0x0000001F,
HC7: 0x0000001F,
HS: 0x00000000,
R0: 0x00000000,
R1: 0x00000000,
R2: 0x00000000,
R3: 0x00000000,
R4: 0x00000000,
R5: 0x00000000,
R6: 0x00000000,
R7: 0x00000000,
CFG: 0x00000200,
GC: 0x00000000,
GS: 0x00000000,
CV: 0x00000000,
OFS: 0x00000000,
CAL: 0x00000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut ADC1_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if ADC1_TAKEN {
None
} else {
ADC1_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if ADC1_TAKEN && inst.addr == INSTANCE.addr {
ADC1_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
ADC1_TAKEN = true;
INSTANCE
}
}
pub const ADC1: *const RegisterBlock = 0x400c4000 as *const _;