#![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 I2C_CR1 {
pub mod PE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXIE {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXIE {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDRIE {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NACKIE {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STOPIE {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TCIE {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ERRIE {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DNF {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ANFOFF {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXDMAEN {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXDMAEN {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SBC {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NOSTRETCH {
pub const offset: u32 = 17;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WUPEN {
pub const offset: u32 = 18;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod GCEN {
pub const offset: u32 = 19;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SMBHEN {
pub const offset: u32 = 20;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SMBDEN {
pub const offset: u32 = 21;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ALERTEN {
pub const offset: u32 = 22;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PECEN {
pub const offset: u32 = 23;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_CR2 {
pub mod SADD {
pub const offset: u32 = 0;
pub const mask: u32 = 0x3ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RD_WRN {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADD10 {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod HEAD10R {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod START {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STOP {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NACK {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NBYTES {
pub const offset: u32 = 16;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RELOAD {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod AUTOEND {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PECBYTE {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_OAR1 {
pub mod OA1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0x3ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OA1MODE {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OA1EN {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_OAR2 {
pub mod OA2 {
pub const offset: u32 = 1;
pub const mask: u32 = 0x7f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OA2MSK {
pub const offset: u32 = 8;
pub const mask: u32 = 0b111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OA2EN {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_TIMINGR {
pub mod SCLL {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SCLH {
pub const offset: u32 = 8;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SDADEL {
pub const offset: u32 = 16;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod SCLDEL {
pub const offset: u32 = 20;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PRESC {
pub const offset: u32 = 28;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_TIMEOUTR {
pub mod TIMEOUTA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIDLE {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIMOUTEN {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIMEOUTB {
pub const offset: u32 = 16;
pub const mask: u32 = 0xfff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TEXTEN {
pub const offset: u32 = 31;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_ISR {
pub mod TXE {
pub const offset: u32 = 0;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TXIS {
pub const offset: u32 = 1;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod RXNE {
pub const offset: u32 = 2;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDR {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NACKF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STOPF {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TC {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TCR {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BERR {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ARLO {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVR {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PECERR {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIMEOUT {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ALERT {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BUSY {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod DIR {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ADDCODE {
pub const offset: u32 = 17;
pub const mask: u32 = 0x7f << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_ICR {
pub mod ADDRCF {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod NACKCF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod STOPCF {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod BERRCF {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ARLOCF {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod OVRCF {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod PECCF {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod TIMOUTCF {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ALERTCF {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_PECR {
pub mod PEC {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_RXDR {
pub mod RXDATA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_TXDR {
pub mod TXDATA {
pub const offset: u32 = 0;
pub const mask: u32 = 0xff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_HWCFGR {
pub mod SMBUS {
pub const offset: u32 = 0;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod ASYN {
pub const offset: u32 = 4;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
pub mod WKP {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod I2C_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 I2C_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 I2C_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 I2C_CR1: RWRegister<u32>,
pub I2C_CR2: RWRegister<u32>,
pub I2C_OAR1: RWRegister<u32>,
pub I2C_OAR2: RWRegister<u32>,
pub I2C_TIMINGR: RWRegister<u32>,
pub I2C_TIMEOUTR: RWRegister<u32>,
pub I2C_ISR: RWRegister<u32>,
pub I2C_ICR: WORegister<u32>,
pub I2C_PECR: RORegister<u32>,
pub I2C_RXDR: RORegister<u32>,
pub I2C_TXDR: RWRegister<u32>,
_reserved1: [u32; 241],
pub I2C_HWCFGR: RORegister<u32>,
pub I2C_VERR: RORegister<u32>,
pub I2C_IPIDR: RORegister<u32>,
pub I2C_SIDR: RORegister<u32>,
}
pub struct ResetValues {
pub I2C_CR1: u32,
pub I2C_CR2: u32,
pub I2C_OAR1: u32,
pub I2C_OAR2: u32,
pub I2C_TIMINGR: u32,
pub I2C_TIMEOUTR: u32,
pub I2C_ISR: u32,
pub I2C_ICR: u32,
pub I2C_PECR: u32,
pub I2C_RXDR: u32,
pub I2C_TXDR: u32,
pub I2C_HWCFGR: u32,
pub I2C_VERR: u32,
pub I2C_IPIDR: u32,
pub I2C_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 I2C1 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40012000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C1_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C1_TAKEN {
None
} else {
I2C1_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C1_TAKEN && inst.addr == INSTANCE.addr {
I2C1_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C1_TAKEN = true;
INSTANCE
}
}
pub const I2C1: *const RegisterBlock = 0x40012000 as *const _;
pub mod I2C2 {
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 {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C2_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C2_TAKEN {
None
} else {
I2C2_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C2_TAKEN && inst.addr == INSTANCE.addr {
I2C2_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C2_TAKEN = true;
INSTANCE
}
}
pub const I2C2: *const RegisterBlock = 0x40013000 as *const _;
pub mod I2C3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40014000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C3_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C3_TAKEN {
None
} else {
I2C3_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C3_TAKEN && inst.addr == INSTANCE.addr {
I2C3_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C3_TAKEN = true;
INSTANCE
}
}
pub const I2C3: *const RegisterBlock = 0x40014000 as *const _;
pub mod I2C4 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x5c002000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C4_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C4_TAKEN {
None
} else {
I2C4_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C4_TAKEN && inst.addr == INSTANCE.addr {
I2C4_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C4_TAKEN = true;
INSTANCE
}
}
pub const I2C4: *const RegisterBlock = 0x5c002000 as *const _;
pub mod I2C5 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40015000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C5_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C5_TAKEN {
None
} else {
I2C5_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C5_TAKEN && inst.addr == INSTANCE.addr {
I2C5_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C5_TAKEN = true;
INSTANCE
}
}
pub const I2C5: *const RegisterBlock = 0x40015000 as *const _;
pub mod I2C6 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x5c009000,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
I2C_CR1: 0x00000000,
I2C_CR2: 0x00000000,
I2C_OAR1: 0x00000000,
I2C_OAR2: 0x00000000,
I2C_TIMINGR: 0x00000000,
I2C_TIMEOUTR: 0x00000000,
I2C_ISR: 0x00000001,
I2C_ICR: 0x00000000,
I2C_PECR: 0x00000000,
I2C_RXDR: 0x00000000,
I2C_TXDR: 0x00000000,
I2C_HWCFGR: 0x00000111,
I2C_VERR: 0x00000012,
I2C_IPIDR: 0x00130012,
I2C_SIDR: 0xA3C5DD01,
};
#[cfg(not(feature = "nosync"))]
#[allow(renamed_and_removed_lints)]
#[allow(private_no_mangle_statics)]
#[no_mangle]
static mut I2C6_TAKEN: bool = false;
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn take() -> Option<Instance> {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C6_TAKEN {
None
} else {
I2C6_TAKEN = true;
Some(INSTANCE)
}
})
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub fn release(inst: Instance) {
external_cortex_m::interrupt::free(|_| unsafe {
if I2C6_TAKEN && inst.addr == INSTANCE.addr {
I2C6_TAKEN = false;
} else {
panic!("Released a peripheral which was not taken");
}
});
}
#[cfg(not(feature = "nosync"))]
#[inline]
pub unsafe fn steal() -> Instance {
I2C6_TAKEN = true;
INSTANCE
}
}
pub const I2C6: *const RegisterBlock = 0x5c009000 as *const _;