#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RWRegister, WORegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod ACR {
pub mod LATENCY {
pub const offset: u32 = 0;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PRFTEN {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ICEN {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DCEN {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ICRST {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DCRST {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PES {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod EMPTY {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod KEYR {
pub mod KEYR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod OPTKEYR {
pub mod OPTKEYR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SR {
pub mod EOP {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPERR {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PROGERR {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WRPERR {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PGAERR {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SIZERR {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PGSERR {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MISERR {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FASTERR {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPTNV {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RDERR {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPTVERR {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BSY {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CFGBSY {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PESD {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CR {
pub mod PG {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PER {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MER {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PNB {
pub const offset: u32 = 3;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STRT {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPTSTRT {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSTPG {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod EOPIE {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERRIE {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RDERRIE {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OBL_LAUNCH {
pub const offset: u32 = 27;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPTLOCK {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod LOCK {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ECCR {
pub mod ADDR_ECC {
pub const offset: u32 = 0;
pub const mask: u32 = 0x1ffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SYSF_ECC {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ECCCIE {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPUID {
pub const offset: u32 = 26;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ECCC {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ECCD {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod OPTR {
pub mod RDP {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ESE {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BOR_LEV {
pub const offset: u32 = 9;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nRST_STOP {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nRST_STDBY {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nRST_SHDW {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IDWG_SW {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IWDG_STOP {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IWDG_STDBY {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WWDG_SW {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nBOOT1 {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SRAM2_PE {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SRAM2_RST {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nSWBOOT0 {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod nBOOT0 {
pub const offset: u32 = 27;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod AGC_TRIM {
pub const offset: u32 = 29;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PCROP1ASR {
pub mod PCROP1A_STRT {
pub const offset: u32 = 0;
pub const mask: u32 = 0x1ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PCROP1AER {
pub mod PCROP1A_END {
pub const offset: u32 = 0;
pub const mask: u32 = 0x1ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PCROP_RDP {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod WRP1AR {
pub mod WRP1A_STRT {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WRP1A_END {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod WRP1BR {
pub mod WRP1B_STRT {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WRP1B_END {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PCROP1BSR {
pub mod PCROP1B_STRT {
pub const offset: u32 = 0;
pub const mask: u32 = 0x1ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PCROP1BER {
pub mod PCROP1B_END {
pub const offset: u32 = 0;
pub const mask: u32 = 0x1ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod IPCCBR {
pub mod IPCCDBA {
pub const offset: u32 = 0;
pub const mask: u32 = 0x3fff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C2ACR {
pub mod PRFTEN {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ICEN {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ICRST {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PES {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C2SR {
pub mod EOP {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OPERR {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PROGERR {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WRPERR {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PGAERR {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SIZERR {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PGSERR {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MISSERR {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FASTERR {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RDERR {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BSY {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CFGBSY {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PESD {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod C2CR {
pub mod PG {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PER {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MER {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PNB {
pub const offset: u32 = 3;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STRT {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSTPG {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod EOPIE {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERRIE {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RDERRIE {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SFR {
pub mod SFSA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DDS {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FSD {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SRRVR {
pub mod SBRV {
pub const offset: u32 = 0;
pub const mask: u32 = 0x3ffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SBRSA {
pub const offset: u32 = 18;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BRSD {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SNBRSA {
pub const offset: u32 = 25;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod C2OPT {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NBRSD {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub ACR: RWRegister<u32>,
_reserved1: [u8; 4],
pub KEYR: WORegister<u32>,
pub OPTKEYR: WORegister<u32>,
pub SR: RWRegister<u32>,
pub CR: RWRegister<u32>,
pub ECCR: RWRegister<u32>,
_reserved2: [u8; 4],
pub OPTR: RWRegister<u32>,
pub PCROP1ASR: RWRegister<u32>,
pub PCROP1AER: RWRegister<u32>,
pub WRP1AR: RWRegister<u32>,
pub WRP1BR: RWRegister<u32>,
pub PCROP1BSR: RWRegister<u32>,
pub PCROP1BER: RWRegister<u32>,
pub IPCCBR: RWRegister<u32>,
_reserved3: [u8; 28],
pub C2ACR: RWRegister<u32>,
pub C2SR: RWRegister<u32>,
pub C2CR: RWRegister<u32>,
_reserved4: [u8; 24],
pub SFR: RWRegister<u32>,
pub SRRVR: RWRegister<u32>,
}
pub struct ResetValues {
pub ACR: u32,
pub KEYR: u32,
pub OPTKEYR: u32,
pub SR: u32,
pub CR: u32,
pub ECCR: u32,
pub OPTR: u32,
pub PCROP1ASR: u32,
pub PCROP1AER: u32,
pub WRP1AR: u32,
pub WRP1BR: u32,
pub PCROP1BSR: u32,
pub PCROP1BER: u32,
pub IPCCBR: u32,
pub C2ACR: u32,
pub C2SR: u32,
pub C2CR: u32,
pub SFR: u32,
pub SRRVR: 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 Flash {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x58004000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
ACR: 0x00000600,
KEYR: 0x00000000,
OPTKEYR: 0x00000000,
SR: 0x00000000,
CR: 0xC0000000,
ECCR: 0x00000000,
OPTR: 0x10708000,
PCROP1ASR: 0xFFFFFE00,
PCROP1AER: 0x7FFFFE00,
WRP1AR: 0xFF00FF00,
WRP1BR: 0xFF00FF00,
PCROP1BSR: 0xFFFFFE00,
PCROP1BER: 0xFFFFFE00,
IPCCBR: 0xFFFFC000,
C2ACR: 0x00000600,
C2SR: 0x00000000,
C2CR: 0x00000000,
SFR: 0xFFFFEE00,
SRRVR: 0x01000000,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut Flash_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if Flash_TAKEN {
None
} else {
Flash_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if Flash_TAKEN && inst.addr == INSTANCE.addr {
Flash_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
Flash_TAKEN = true;
INSTANCE
}
}
pub const Flash: *const RegisterBlock = 0x58004000 as *const _;