#![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 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 const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod TXIE {
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 RXIE {
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 ADDRIE {
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 NACKIE {
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 STOPIE {
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 TCIE {
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 ERRIE {
pub const offset: u32 = 7;
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 DNF {
pub const offset: u32 = 8;
pub const mask: u32 = 0b1111 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoFilter: u32 = 0b0000;
pub const Filter1: u32 = 0b0001;
pub const Filter2: u32 = 0b0010;
pub const Filter3: u32 = 0b0011;
pub const Filter4: u32 = 0b0100;
pub const Filter5: u32 = 0b0101;
pub const Filter6: u32 = 0b0110;
pub const Filter7: u32 = 0b0111;
pub const Filter8: u32 = 0b1000;
pub const Filter9: u32 = 0b1001;
pub const Filter10: u32 = 0b1010;
pub const Filter11: u32 = 0b1011;
pub const Filter12: u32 = 0b1100;
pub const Filter13: u32 = 0b1101;
pub const Filter14: u32 = 0b1110;
pub const Filter15: u32 = 0b1111;
}
}
pub mod ANFOFF {
pub const offset: u32 = 12;
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 SWRST {
pub const offset: u32 = 13;
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 const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod RXDMAEN {
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 SBC {
pub const offset: u32 = 16;
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 NOSTRETCH {
pub const offset: u32 = 17;
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 WUPEN {
pub const offset: u32 = 18;
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 GCEN {
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 SMBHEN {
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 SMBDEN {
pub const offset: u32 = 21;
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 ALERTEN {
pub const offset: u32 = 22;
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 PECEN {
pub const offset: u32 = 23;
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 CR2 {
pub mod PECBYTE {
pub const offset: u32 = 26;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoPec: u32 = 0b0;
pub const Pec: u32 = 0b1;
}
}
pub mod AUTOEND {
pub const offset: u32 = 25;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Software: u32 = 0b0;
pub const Automatic: u32 = 0b1;
}
}
pub mod RELOAD {
pub const offset: u32 = 24;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Completed: u32 = 0b0;
pub const NotCompleted: u32 = 0b1;
}
}
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 NACK {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Ack: u32 = 0b0;
pub const Nack: u32 = 0b1;
}
}
pub mod STOP {
pub const offset: u32 = 14;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoStop: u32 = 0b0;
pub const Stop: u32 = 0b1;
}
}
pub mod START {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoStart: u32 = 0b0;
pub const Start: u32 = 0b1;
}
}
pub mod HEAD10R {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Complete: u32 = 0b0;
pub const Partial: u32 = 0b1;
}
}
pub mod ADD10 {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bit7: u32 = 0b0;
pub const Bit10: u32 = 0b1;
}
}
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 const Write: u32 = 0b0;
pub const Read: u32 = 0b1;
}
}
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 OAR1 {
pub mod OA1MODE {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Bit7: u32 = 0b0;
pub const Bit10: u32 = 0b1;
}
}
pub mod OA1EN {
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 OA1 {
pub const offset: u32 = 0;
pub const mask: u32 = 0x3ff << offset;
pub mod R {}
pub mod W {}
pub mod RW {}
}
}
pub mod 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 const NoMask: u32 = 0b000;
pub const Mask1: u32 = 0b001;
pub const Mask2: u32 = 0b010;
pub const Mask3: u32 = 0b011;
pub const Mask4: u32 = 0b100;
pub const Mask5: u32 = 0b101;
pub const Mask6: u32 = 0b110;
pub const Mask7: u32 = 0b111;
}
}
pub mod OA2EN {
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 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 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 const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
pub mod TIMOUTEN {
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 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 const Disabled: u32 = 0b0;
pub const Enabled: u32 = 0b1;
}
}
}
pub mod ISR {
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 DIR {
pub const offset: u32 = 16;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Write: u32 = 0b0;
pub const Read: u32 = 0b1;
}
}
pub mod BUSY {
pub const offset: u32 = 15;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NotBusy: u32 = 0b0;
pub const Busy: u32 = 0b1;
}
}
pub mod ALERT {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoAlert: u32 = 0b0;
pub const Alert: u32 = 0b1;
}
}
pub mod TIMEOUT {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoTimeout: u32 = 0b0;
pub const Timeout: u32 = 0b1;
}
}
pub mod PECERR {
pub const offset: u32 = 11;
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 OVR {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoOverrun: u32 = 0b0;
pub const Overrun: u32 = 0b1;
}
}
pub mod ARLO {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NotLost: u32 = 0b0;
pub const Lost: u32 = 0b1;
}
}
pub mod BERR {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoError: u32 = 0b0;
pub const Error: u32 = 0b1;
}
}
pub mod TCR {
pub const offset: u32 = 7;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NotComplete: u32 = 0b0;
pub const Complete: u32 = 0b1;
}
}
pub mod TC {
pub const offset: u32 = 6;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub use super::TCR::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 const NoStop: u32 = 0b0;
pub const Stop: u32 = 0b1;
}
}
pub mod NACKF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NoNack: u32 = 0b0;
pub const Nack: u32 = 0b1;
}
}
pub mod ADDR {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const NotMatch: u32 = 0b0;
pub const Match: u32 = 0b1;
}
}
pub mod RXNE {
pub const offset: u32 = 2;
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 TXIS {
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 TXE {
pub const offset: u32 = 0;
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 ICR {
pub mod ALERTCF {
pub const offset: u32 = 13;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod TIMOUTCF {
pub const offset: u32 = 12;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod PECCF {
pub const offset: u32 = 11;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod OVRCF {
pub const offset: u32 = 10;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod ARLOCF {
pub const offset: u32 = 9;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod BERRCF {
pub const offset: u32 = 8;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod STOPCF {
pub const offset: u32 = 5;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod NACKCF {
pub const offset: u32 = 4;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
pub mod ADDRCF {
pub const offset: u32 = 3;
pub const mask: u32 = 1 << offset;
pub mod R {}
pub mod W {}
pub mod RW {
pub const Clear: u32 = 0b1;
}
}
}
pub mod 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 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 TXDR {
pub mod TXDATA {
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 OAR1: RWRegister<u32>,
pub OAR2: RWRegister<u32>,
pub TIMINGR: RWRegister<u32>,
pub TIMEOUTR: RWRegister<u32>,
pub ISR: RWRegister<u32>,
pub ICR: WORegister<u32>,
pub PECR: RORegister<u32>,
pub RXDR: RORegister<u32>,
pub TXDR: RWRegister<u32>,
}
pub struct ResetValues {
pub CR1: u32,
pub CR2: u32,
pub OAR1: u32,
pub OAR2: u32,
pub TIMINGR: u32,
pub TIMEOUTR: u32,
pub ISR: u32,
pub ICR: u32,
pub PECR: u32,
pub RXDR: u32,
pub TXDR: 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: 0x40005400,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
OAR1: 0x00000000,
OAR2: 0x00000000,
TIMINGR: 0x00000000,
TIMEOUTR: 0x00000000,
ISR: 0x00000001,
ICR: 0x00000000,
PECR: 0x00000000,
RXDR: 0x00000000,
TXDR: 0x00000000,
};
#[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 = 0x40005400 as *const _;
pub mod I2C2 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40005800,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
OAR1: 0x00000000,
OAR2: 0x00000000,
TIMINGR: 0x00000000,
TIMEOUTR: 0x00000000,
ISR: 0x00000001,
ICR: 0x00000000,
PECR: 0x00000000,
RXDR: 0x00000000,
TXDR: 0x00000000,
};
#[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 = 0x40005800 as *const _;
pub mod I2C3 {
use super::ResetValues;
#[cfg(not(feature = "nosync"))]
use super::Instance;
#[cfg(not(feature = "nosync"))]
const INSTANCE: Instance = Instance {
addr: 0x40007800,
_marker: ::core::marker::PhantomData,
};
pub const reset: ResetValues = ResetValues {
CR1: 0x00000000,
CR2: 0x00000000,
OAR1: 0x00000000,
OAR2: 0x00000000,
TIMINGR: 0x00000000,
TIMEOUTR: 0x00000000,
ISR: 0x00000001,
ICR: 0x00000000,
PECR: 0x00000000,
RXDR: 0x00000000,
TXDR: 0x00000000,
};
#[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 = 0x40007800 as *const _;