#![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 CR1 {
pub mod BIDIMODE {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Unidirectional: u32 = 0b0;
pub const Bidirectional: u32 = 0b1;
}
}
pub mod BIDIOE {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const OutputDisabled: u32 = 0b0;
pub const OutputEnabled: u32 = 0b1;
}
}
pub mod CRCEN {
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 CRCNEXT {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const TxBuffer: u32 = 0b0;
pub const CRC: u32 = 0b1;
}
}
pub mod CRCL {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const EightBit: u32 = 0b0;
pub const SixteenBit: u32 = 0b1;
}
}
pub mod RXONLY {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const FullDuplex: u32 = 0b0;
pub const OutputDisabled: u32 = 0b1;
}
}
pub mod SSM {
pub const offset: u32 = 9;
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 SSI {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SlaveSelected: u32 = 0b0;
pub const SlaveNotSelected: u32 = 0b1;
}
}
pub mod LSBFIRST {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const MSBFirst: u32 = 0b0;
pub const LSBFirst: u32 = 0b1;
}
}
pub mod SPE {
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 BR {
pub const offset: u32 = 3;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Div2: u32 = 0b000;
pub const Div4: u32 = 0b001;
pub const Div8: u32 = 0b010;
pub const Div16: u32 = 0b011;
pub const Div32: u32 = 0b100;
pub const Div64: u32 = 0b101;
pub const Div128: u32 = 0b110;
pub const Div256: u32 = 0b111;
}
}
pub mod MSTR {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Slave: u32 = 0b0;
pub const Master: u32 = 0b1;
}
}
pub mod CPOL {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const IdleLow: u32 = 0b0;
pub const IdleHigh: u32 = 0b1;
}
}
pub mod CPHA {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const FirstEdge: u32 = 0b0;
pub const SecondEdge: u32 = 0b1;
}
}
}
pub mod CR2 {
pub mod RXDMAEN {
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 TXDMAEN {
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 SSOE {
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 NSSP {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoPulse: u32 = 0b0;
pub const PulseGenerated: u32 = 0b1;
}
}
pub mod FRF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Motorola: u32 = 0b0;
pub const TI: u32 = 0b1;
}
}
pub mod ERRIE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Masked: u32 = 0b0;
pub const NotMasked: u32 = 0b1;
}
}
pub mod RXNEIE {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Masked: u32 = 0b0;
pub const NotMasked: u32 = 0b1;
}
}
pub mod TXEIE {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Masked: u32 = 0b0;
pub const NotMasked: u32 = 0b1;
}
}
pub mod DS {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const FourBit: u32 = 0b0011;
pub const FiveBit: u32 = 0b0100;
pub const SixBit: u32 = 0b0101;
pub const SevenBit: u32 = 0b0110;
pub const EightBit: u32 = 0b0111;
pub const NineBit: u32 = 0b1000;
pub const TenBit: u32 = 0b1001;
pub const ElevenBit: u32 = 0b1010;
pub const TwelveBit: u32 = 0b1011;
pub const ThirteenBit: u32 = 0b1100;
pub const FourteenBit: u32 = 0b1101;
pub const FifteenBit: u32 = 0b1110;
pub const SixteenBit: u32 = 0b1111;
}
}
pub mod FRXTH {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Half: u32 = 0b0;
pub const Quarter: u32 = 0b1;
}
}
pub mod LDMA_RX {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Even: u32 = 0b0;
pub const Odd: u32 = 0b1;
}
}
pub mod LDMA_TX {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Even: u32 = 0b0;
pub const Odd: u32 = 0b1;
}
}
}
pub mod SR {
pub mod RXNE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Empty: u32 = 0b0;
pub const NotEmpty: u32 = 0b1;
}
}
pub mod TXE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NotEmpty: u32 = 0b0;
pub const Empty: u32 = 0b1;
}
}
pub mod CHSIDE {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Left: u32 = 0b0;
pub const Right: u32 = 0b1;
}
}
pub mod UDR {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NoUnderrun: u32 = 0b0;
pub const Underrun: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod CRCERR {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Match: u32 = 0b0;
pub const NoMatch: u32 = 0b1;
}
}
pub mod MODF {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NoFault: u32 = 0b0;
pub const Fault: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod OVR {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NoOverrun: u32 = 0b0;
pub const Overrun: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod BSY {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NotBusy: u32 = 0b0;
pub const Busy: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod TIFRFE {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {
pub const NoError: u32 = 0b0;
pub const Error: u32 = 0b1;
}
pub mod W {}
pub mod RW {}
}
pub mod FRLVL {
pub const offset: u32 = 9;
pub const mask: u32 = 0b11 << offset;
pub mod R {
pub const Empty: u32 = 0b00;
pub const Quarter: u32 = 0b01;
pub const Half: u32 = 0b10;
pub const Full: u32 = 0b11;
}
pub mod W {}
pub mod RW {}
}
pub mod FTLVL {
pub const offset: u32 = 11;
pub const mask: u32 = 0b11 << offset;
pub mod R {
pub const Empty: u32 = 0b00;
pub const Quarter: u32 = 0b01;
pub const Half: u32 = 0b10;
pub const Full: u32 = 0b11;
}
pub mod W {}
pub mod RW {}
}
}
pub mod DR {
pub mod DR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod CRCPR {
pub mod CRCPOLY {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod RXCRCR {
pub mod RxCRC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod TXCRCR {
pub mod TxCRC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2SCFGR {
pub mod I2SMOD {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SPIMode: u32 = 0b0;
pub const I2SMode: u32 = 0b1;
}
}
pub mod I2SE {
pub const offset: u32 = 10;
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 I2SCFG {
pub const offset: u32 = 8;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SlaveTx: u32 = 0b00;
pub const SlaveRx: u32 = 0b01;
pub const MasterTx: u32 = 0b10;
pub const MasterRx: u32 = 0b11;
}
}
pub mod PCMSYNC {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Short: u32 = 0b0;
pub const Long: u32 = 0b1;
}
}
pub mod I2SSTD {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Philips: u32 = 0b00;
pub const MSB: u32 = 0b01;
pub const LSB: u32 = 0b10;
pub const PCM: u32 = 0b11;
}
}
pub mod CKPOL {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const IdleLow: u32 = 0b0;
pub const IdleHigh: u32 = 0b1;
}
}
pub mod DATLEN {
pub const offset: u32 = 1;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SixteenBit: u32 = 0b00;
pub const TwentyFourBit: u32 = 0b01;
pub const ThirtyTwoBit: u32 = 0b10;
}
}
pub mod CHLEN {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const SixteenBit: u32 = 0b0;
pub const ThirtyTwoBit: u32 = 0b1;
}
}
}
pub mod I2SPR {
pub mod MCKOE {
pub const offset: u32 = 9;
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 ODD {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Even: u32 = 0b0;
pub const Odd: u32 = 0b1;
}
}
pub mod I2SDIV {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub CR1: RWRegister<u32>,
pub CR2: RWRegister<u32>,
pub SR: RWRegister<u32>,
pub DR: RWRegister<u32>,
pub CRCPR: RWRegister<u32>,
pub RXCRCR: RORegister<u32>,
pub TXCRCR: RORegister<u32>,
pub I2SCFGR: RWRegister<u32>,
pub I2SPR: RWRegister<u32>,
}
pub struct ResetValues {
pub CR1: u32,
pub CR2: u32,
pub SR: u32,
pub DR: u32,
pub CRCPR: u32,
pub RXCRCR: u32,
pub TXCRCR: u32,
pub I2SCFGR: u32,
pub I2SPR: 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 I2S2ext {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40003400,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2S2ext_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2S2ext_TAKEN {
None
} else {
I2S2ext_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2S2ext_TAKEN && inst.addr == INSTANCE.addr {
I2S2ext_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2S2ext_TAKEN = true;
INSTANCE
}
}
pub const I2S2ext: *const RegisterBlock = 0x40003400 as *const _;
pub mod I2S3ext {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40004000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2S3ext_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2S3ext_TAKEN {
None
} else {
I2S3ext_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2S3ext_TAKEN && inst.addr == INSTANCE.addr {
I2S3ext_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2S3ext_TAKEN = true;
INSTANCE
}
}
pub const I2S3ext: *const RegisterBlock = 0x40004000 as *const _;
pub mod SPI1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40013000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI1_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI1_TAKEN {
None
} else {
SPI1_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI1_TAKEN && inst.addr == INSTANCE.addr {
SPI1_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI1_TAKEN = true;
INSTANCE
}
}
pub const SPI1: *const RegisterBlock = 0x40013000 as *const _;
pub mod SPI2 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40003800,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI2_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI2_TAKEN {
None
} else {
SPI2_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI2_TAKEN && inst.addr == INSTANCE.addr {
SPI2_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI2_TAKEN = true;
INSTANCE
}
}
pub const SPI2: *const RegisterBlock = 0x40003800 as *const _;
pub mod SPI3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40003c00,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI3_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI3_TAKEN {
None
} else {
SPI3_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI3_TAKEN && inst.addr == INSTANCE.addr {
SPI3_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI3_TAKEN = true;
INSTANCE
}
}
pub const SPI3: *const RegisterBlock = 0x40003c00 as *const _;
pub mod SPI4 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40013c00,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
SR: 0x00000002,
DR: 0x00000000,
CRCPR: 0x00000007,
RXCRCR: 0x00000000,
TXCRCR: 0x00000000,
I2SCFGR: 0x00000000,
I2SPR: 0x00000010,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI4_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI4_TAKEN {
None
} else {
SPI4_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI4_TAKEN && inst.addr == INSTANCE.addr {
SPI4_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI4_TAKEN = true;
INSTANCE
}
}
pub const SPI4: *const RegisterBlock = 0x40013c00 as *const _;