#![allow(non_snake_case, non_upper_case_globals)]
#![allow(non_camel_case_types)]
use crate::{RORegister, RWRegister, WORegister};
#[cfg(not(feature = "nosync"))]
use core::marker::PhantomData;
pub mod SPI2S_CR1 {
pub mod SPE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MASRX {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CSTART {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CSUSP {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod HDDIR {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SSI {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRC33_17 {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RCRCINI {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TCRCINI {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IOLOCK {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI2S_IER {
pub mod RXPIE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXPIE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DXPIE {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod EOTIE {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXTFIE {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod UDRIE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVRIE {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCEIE {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIFREIE {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MODFIE {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TSERFIE {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI2S_SR {
pub mod RXP {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXP {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DXP {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod EOT {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXTF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod UDR {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVR {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCE {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIFRE {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MODF {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TSERF {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SUSP {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXC {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXPLVL {
pub const offset: u32 = 13;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXWNE {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CTSIZE {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI2S_IFCR {
pub mod EOTC {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXTFC {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod UDRC {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVRC {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCEC {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIFREC {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MODFC {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TSERFC {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SUSPC {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI2S_TXDR {
pub mod TXDR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI2S_RXDR {
pub mod RXDR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_CR2 {
pub mod TSIZE {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TSER {
pub const offset: u32 = 16;
pub const mask: u32 = 0xffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_CFG1 {
pub mod DSIZE {
pub const offset: u32 = 0;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FTHLV {
pub const offset: u32 = 5;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod UDRCFG {
pub const offset: u32 = 9;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod UDRDET {
pub const offset: u32 = 11;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXDMAEN {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXDMAEN {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCSIZE {
pub const offset: u32 = 16;
pub const mask: u32 = 0b11111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCEN {
pub const offset: u32 = 22;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MBR {
pub const offset: u32 = 28;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_CFG2 {
pub mod MSSI {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MIDI {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod IOSWP {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod COMM {
pub const offset: u32 = 17;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SP {
pub const offset: u32 = 19;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MASTER {
pub const offset: u32 = 22;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod LSBFRST {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPHA {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CPOL {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SSM {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SSIOP {
pub const offset: u32 = 28;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SSOE {
pub const offset: u32 = 29;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SSOM {
pub const offset: u32 = 30;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod AFCNTR {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_CRCPOLY {
pub mod CRCPOLY {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_TXCRC {
pub mod TXCRC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_RXCRC {
pub mod RXCRC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_UDRDR {
pub mod UDRDR {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_I2SCFGR {
pub mod I2SMOD {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod I2SCFG {
pub const offset: u32 = 1;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod I2SSTD {
pub const offset: u32 = 4;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PCMSYNC {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DATLEN {
pub const offset: u32 = 8;
pub const mask: u32 = 0b11 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CHLEN {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CKPOL {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod FIXCH {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WSINV {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DATFMT {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod I2SDIV {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ODD {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MCKOE {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_I2S_HWCFGR {
pub mod TXFCFG {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXFCFG {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod CRCCFG {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod I2SCFG {
pub const offset: u32 = 12;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DSCFG {
pub const offset: u32 = 16;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_VERR {
pub mod MINREV {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod MAJREV {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_IPIDR {
pub mod ID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod SPI_SIDR {
pub mod SID {
pub const offset: u32 = 0;
pub const mask: u32 = 0xffffffff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
#[repr(C)]
pub struct RegisterBlock {
pub SPI2S_CR1: RWRegister<u32>,
pub SPI_CR2: RWRegister<u32>,
pub SPI_CFG1: RWRegister<u32>,
pub SPI_CFG2: RWRegister<u32>,
pub SPI2S_IER: RWRegister<u32>,
pub SPI2S_SR: RORegister<u32>,
pub SPI2S_IFCR: WORegister<u32>,
_reserved1: [u32; 1],
pub SPI2S_TXDR: WORegister<u32>,
_reserved2: [u32; 3],
pub SPI2S_RXDR: RORegister<u32>,
_reserved3: [u32; 3],
pub SPI_CRCPOLY: RWRegister<u32>,
pub SPI_TXCRC: RORegister<u32>,
pub SPI_RXCRC: RORegister<u32>,
pub SPI_UDRDR: RWRegister<u32>,
pub SPI_I2SCFGR: RWRegister<u32>,
_reserved4: [u32; 231],
pub SPI_I2S_HWCFGR: RORegister<u32>,
pub SPI_VERR: RORegister<u32>,
pub SPI_IPIDR: RORegister<u32>,
pub SPI_SIDR: RORegister<u32>,
}
pub struct ResetValues {
pub SPI2S_CR1: u32,
pub SPI_CR2: u32,
pub SPI_CFG1: u32,
pub SPI_CFG2: u32,
pub SPI2S_IER: u32,
pub SPI2S_SR: u32,
pub SPI2S_IFCR: u32,
pub SPI2S_TXDR: u32,
pub SPI2S_RXDR: u32,
pub SPI_CRCPOLY: u32,
pub SPI_TXCRC: u32,
pub SPI_RXCRC: u32,
pub SPI_UDRDR: u32,
pub SPI_I2SCFGR: u32,
pub SPI_I2S_HWCFGR: u32,
pub SPI_VERR: u32,
pub SPI_IPIDR: u32,
pub SPI_SIDR: 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 SPI1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x44004000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[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 = 0x44004000 as *const _;
pub mod SPI2 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x4000b000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[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 = 0x4000b000 as *const _;
pub mod SPI3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x4000c000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[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 = 0x4000c000 as *const _;
pub mod SPI4 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x44005000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[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 = 0x44005000 as *const _;
pub mod SPI5 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x44009000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI5_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI5_TAKEN {
None
} else {
SPI5_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI5_TAKEN && inst.addr == INSTANCE.addr {
SPI5_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI5_TAKEN = true;
INSTANCE
}
}
pub const SPI5: *const RegisterBlock = 0x44009000 as *const _;
pub mod SPI6 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x5c001000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
SPI2S_CR1: 0x00000000,
SPI2S_IER: 0x00000000,
SPI2S_SR: 0x00001002,
SPI2S_IFCR: 0x00000000,
SPI2S_TXDR: 0x00000000,
SPI2S_RXDR: 0x00000000,
SPI_CR2: 0x00000000,
SPI_CFG1: 0x00070007,
SPI_CFG2: 0x00000000,
SPI_CRCPOLY: 0x00000107,
SPI_TXCRC: 0x00000000,
SPI_RXCRC: 0x00000000,
SPI_UDRDR: 0x00000000,
SPI_I2SCFGR: 0x00000000,
SPI_I2S_HWCFGR: 0x00000000,
SPI_VERR: 0x00000011,
SPI_IPIDR: 0x00130022,
SPI_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut SPI6_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI6_TAKEN {
None
} else {
SPI6_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if SPI6_TAKEN && inst.addr == INSTANCE.addr {
SPI6_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
SPI6_TAKEN = true;
INSTANCE
}
}
pub const SPI6: *const RegisterBlock = 0x5c001000 as *const _;