diff --git a/src/qspi.rs b/src/qspi.rs index 5a6bea0a..8eb2b1a0 100644 --- a/src/qspi.rs +++ b/src/qspi.rs @@ -675,9 +675,7 @@ impl Qspi<(CLK, NCS, IO0, IO1, IO2, IO3)> { if let Some((data, _)) = command.data { for byte in data { while self.qspi.sr.read().ftf().bit_is_clear() {} - unsafe { - ptr::write_volatile(&self.qspi.dr as *const _ as *mut u8, *byte); - } + self.qspi.dr.write(|w| unsafe { w.bits(u32::from(*byte)) }); } } diff --git a/src/serial.rs b/src/serial.rs index 0eb5d970..ef40847f 100644 --- a/src/serial.rs +++ b/src/serial.rs @@ -520,7 +520,7 @@ macro_rules! hal { // NOTE(unsafe) atomic write to stateless register // NOTE(write_volatile) 8-bit write that's not possible through the svd2rust API unsafe { - ptr::write_volatile(&(*pac::$USARTX::ptr()).tdr as *const _ as *mut _, byte) + (*pac::$USARTX::ptr()).tdr.write(|w| { w.tdr().bits(u16::from(byte)) }); } Ok(()) } else { diff --git a/src/spi.rs b/src/spi.rs index dea33abe..690f2705 100644 --- a/src/spi.rs +++ b/src/spi.rs @@ -268,7 +268,7 @@ macro_rules! hal { nb::Error::Other(Error::Crc) } else if sr.txe().bit_is_set() { // NOTE(write_volatile) see note above - unsafe { ptr::write_volatile(&self.spi.dr as *const _ as *mut u8, byte) } + self.spi.dr.write(|w| unsafe{ w.bits(u32::from(byte) ) }); return Ok(()); } else { nb::Error::WouldBlock