#![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 BCR1 {
pub mod MBKEN {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod MUXEN {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod MTYP {
pub const offset: u32 = 2;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SRAM: u32 = 0b00;
pub const PSRAM: u32 = 0b01;
pub const Flash: u32 = 0b10;
}
}
pub mod MWID {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bits8: u32 = 0b00;
pub const Bits16: u32 = 0b01;
pub const Bits32: u32 = 0b10;
}
}
pub mod FACCEN {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod BURSTEN {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WAITPOL {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ActiveLow: u32 = 0b0;
pub const ActiveHigh: u32 = 0b1;
}
}
pub mod WAITCFG {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const BeforeWaitState: u32 = 0b0;
pub const DuringWaitState: u32 = 0b1;
}
}
pub mod WREN {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WAITEN {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod EXTMOD {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod ASYNCWAIT {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod CBURSTRW {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod CCLKEN {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WFDIS {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Enabled: u32 = 0b0;
pub const Disabled: u32 = 0b1;
}
}
pub mod WRAPMOD {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPSIZE {
pub const offset: u32 = 16;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoBurstSplit: u32 = 0b000;
pub const Bytes128: u32 = 0b001;
pub const Bytes256: u32 = 0b010;
pub const Bytes512: u32 = 0b011;
pub const Bytes1024: u32 = 0b100;
}
}
}
pub mod BTR1 {
pub mod ACCMOD {
pub const offset: u32 = 28;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const A: u32 = 0b00;
pub const B: u32 = 0b01;
pub const C: u32 = 0b10;
pub const D: u32 = 0b11;
}
}
pub mod DATLAT {
pub const offset: u32 = 24;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CLKDIV {
pub const offset: u32 = 20;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BUSTURN {
pub const offset: u32 = 16;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DATAST {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDHLD {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDSET {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod BTR2 {
pub use super::BTR1::ACCMOD;
pub use super::BTR1::ADDHLD;
pub use super::BTR1::ADDSET;
pub use super::BTR1::BUSTURN;
pub use super::BTR1::CLKDIV;
pub use super::BTR1::DATAST;
pub use super::BTR1::DATLAT;
}
pub mod BTR3 {
pub use super::BTR1::ACCMOD;
pub use super::BTR1::ADDHLD;
pub use super::BTR1::ADDSET;
pub use super::BTR1::BUSTURN;
pub use super::BTR1::CLKDIV;
pub use super::BTR1::DATAST;
pub use super::BTR1::DATLAT;
}
pub mod BTR4 {
pub use super::BTR1::ACCMOD;
pub use super::BTR1::ADDHLD;
pub use super::BTR1::ADDSET;
pub use super::BTR1::BUSTURN;
pub use super::BTR1::CLKDIV;
pub use super::BTR1::DATAST;
pub use super::BTR1::DATLAT;
}
pub mod BCR2 {
pub mod CBURSTRW {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod ASYNCWAIT {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod EXTMOD {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WAITEN {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WREN {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WAITCFG {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const BeforeWaitState: u32 = 0b0;
pub const DuringWaitState: u32 = 0b1;
}
}
pub mod WRAPMOD {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WAITPOL {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const ActiveLow: u32 = 0b0;
pub const ActiveHigh: u32 = 0b1;
}
}
pub mod BURSTEN {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod FACCEN {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod MWID {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bits8: u32 = 0b00;
pub const Bits16: u32 = 0b01;
pub const Bits32: u32 = 0b10;
}
}
pub mod MTYP {
pub const offset: u32 = 2;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SRAM: u32 = 0b00;
pub const PSRAM: u32 = 0b01;
pub const Flash: u32 = 0b10;
}
}
pub mod MUXEN {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod MBKEN {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod WFDIS {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CCLKEN {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPSIZE {
pub const offset: u32 = 16;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoBurstSplit: u32 = 0b000;
pub const Bytes128: u32 = 0b001;
pub const Bytes256: u32 = 0b010;
pub const Bytes512: u32 = 0b011;
pub const Bytes1024: u32 = 0b100;
}
}
}
pub mod BCR3 {
pub use super::BCR2::ASYNCWAIT;
pub use super::BCR2::BURSTEN;
pub use super::BCR2::CBURSTRW;
pub use super::BCR2::CCLKEN;
pub use super::BCR2::CPSIZE;
pub use super::BCR2::EXTMOD;
pub use super::BCR2::FACCEN;
pub use super::BCR2::MBKEN;
pub use super::BCR2::MTYP;
pub use super::BCR2::MUXEN;
pub use super::BCR2::MWID;
pub use super::BCR2::WAITCFG;
pub use super::BCR2::WAITEN;
pub use super::BCR2::WAITPOL;
pub use super::BCR2::WFDIS;
pub use super::BCR2::WRAPMOD;
pub use super::BCR2::WREN;
}
pub mod BCR4 {
pub use super::BCR2::ASYNCWAIT;
pub use super::BCR2::BURSTEN;
pub use super::BCR2::CBURSTRW;
pub use super::BCR2::CCLKEN;
pub use super::BCR2::CPSIZE;
pub use super::BCR2::EXTMOD;
pub use super::BCR2::FACCEN;
pub use super::BCR2::MBKEN;
pub use super::BCR2::MTYP;
pub use super::BCR2::MUXEN;
pub use super::BCR2::MWID;
pub use super::BCR2::WAITCFG;
pub use super::BCR2::WAITEN;
pub use super::BCR2::WAITPOL;
pub use super::BCR2::WFDIS;
pub use super::BCR2::WRAPMOD;
pub use super::BCR2::WREN;
}
pub mod PCR {
pub mod ECCPS {
pub const offset: u32 = 17;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bytes256: u32 = 0b000;
pub const Bytes512: u32 = 0b001;
pub const Bytes1024: u32 = 0b010;
pub const Bytes2048: u32 = 0b011;
pub const Bytes4096: u32 = 0b100;
pub const Bytes8192: u32 = 0b101;
}
}
pub mod TAR {
pub const offset: u32 = 13;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TCLR {
pub const offset: u32 = 9;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ECCEN {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod PWID {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bits8: u32 = 0b00;
pub const Bits16: u32 = 0b01;
}
}
pub mod PTYP {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NANDFlash: u32 = 0b1;
}
}
pub mod PBKEN {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod PWAITEN {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
}
pub mod SR {
pub mod FEMPT {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NotEmpty: u32 = 0b0;
pub const Empty: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod IFEN {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod ILEN {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod IREN {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod IFS {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DidNotOccur: u32 = 0b0;
pub const Occurred: u32 = 0b1;
}
}
pub mod ILS {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DidNotOccur: u32 = 0b0;
pub const Occurred: u32 = 0b1;
}
}
pub mod IRS {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const DidNotOccur: u32 = 0b0;
pub const Occurred: u32 = 0b1;
}
}
}
pub mod PMEM {
pub mod MEMHIZ {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MEMHOLD {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MEMWAIT {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MEMSET {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod PATT {
pub mod ATTHIZ {
pub const offset: u32 = 24;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ATTHOLD {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ATTWAIT {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ATTSET {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod ECCR {
pub mod ECC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod BWTR1 {
pub mod ACCMOD {
pub const offset: u32 = 28;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const A: u32 = 0b00;
pub const B: u32 = 0b01;
pub const C: u32 = 0b10;
pub const D: u32 = 0b11;
}
}
pub mod DATLAT {
pub const offset: u32 = 24;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CLKDIV {
pub const offset: u32 = 20;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DATAST {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDHLD {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDSET {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BUSTURN {
pub const offset: u32 = 16;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod BWTR2 {
pub use super::BWTR1::ACCMOD;
pub use super::BWTR1::ADDHLD;
pub use super::BWTR1::ADDSET;
pub use super::BWTR1::BUSTURN;
pub use super::BWTR1::CLKDIV;
pub use super::BWTR1::DATAST;
pub use super::BWTR1::DATLAT;
}
pub mod BWTR3 {
pub use super::BWTR1::ACCMOD;
pub use super::BWTR1::ADDHLD;
pub use super::BWTR1::ADDSET;
pub use super::BWTR1::BUSTURN;
pub use super::BWTR1::CLKDIV;
pub use super::BWTR1::DATAST;
pub use super::BWTR1::DATLAT;
}
pub mod BWTR4 {
pub use super::BWTR1::ACCMOD;
pub use super::BWTR1::ADDHLD;
pub use super::BWTR1::ADDSET;
pub use super::BWTR1::BUSTURN;
pub use super::BWTR1::CLKDIV;
pub use super::BWTR1::DATAST;
pub use super::BWTR1::DATLAT;
}
#[repr(C)]
pub struct RegisterBlock {
pub BCR1: RWRegister<u32>,
pub BTR1: RWRegister<u32>,
pub BCR2: RWRegister<u32>,
pub BTR2: RWRegister<u32>,
pub BCR3: RWRegister<u32>,
pub BTR3: RWRegister<u32>,
pub BCR4: RWRegister<u32>,
pub BTR4: RWRegister<u32>,
_reserved1: [u8; 96],
pub PCR: RWRegister<u32>,
pub SR: RWRegister<u32>,
pub PMEM: RWRegister<u32>,
pub PATT: RWRegister<u32>,
_reserved2: [u8; 4],
pub ECCR: RORegister<u32>,
_reserved3: [u8; 108],
pub BWTR1: RWRegister<u32>,
_reserved4: [u8; 4],
pub BWTR2: RWRegister<u32>,
_reserved5: [u8; 4],
pub BWTR3: RWRegister<u32>,
_reserved6: [u8; 4],
pub BWTR4: RWRegister<u32>,
}
pub struct ResetValues {
pub BCR1: u32,
pub BTR1: u32,
pub BCR2: u32,
pub BTR2: u32,
pub BCR3: u32,
pub BTR3: u32,
pub BCR4: u32,
pub BTR4: u32,
pub PCR: u32,
pub SR: u32,
pub PMEM: u32,
pub PATT: u32,
pub ECCR: u32,
pub BWTR1: u32,
pub BWTR2: u32,
pub BWTR3: u32,
pub BWTR4: 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 FMC {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0xa0000000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
BCR1: 0x000030D0,
BTR1: 0xFFFFFFFF,
BTR2: 0xFFFFFFFF,
BTR3: 0xFFFFFFFF,
BTR4: 0xFFFFFFFF,
BCR2: 0x000030D0,
BCR3: 0x000030D0,
BCR4: 0x000030D0,
PCR: 0x00000018,
SR: 0x00000040,
PMEM: 0xFCFCFCFC,
PATT: 0xFCFCFCFC,
ECCR: 0x00000000,
BWTR1: 0x0FFFFFFF,
BWTR2: 0x0FFFFFFF,
BWTR3: 0x0FFFFFFF,
BWTR4: 0x0FFFFFFF,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut FMC_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if FMC_TAKEN {
None
} else {
FMC_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if FMC_TAKEN && inst.addr == INSTANCE.addr {
FMC_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
FMC_TAKEN = true;
INSTANCE
}
}
pub const FMC: *const RegisterBlock = 0xa0000000 as *const _;