aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorqwerty19106 <[email protected]>2025-07-03 18:02:50 +0400
committerqwerty19106 <[email protected]>2025-07-03 18:17:01 +0400
commite256f1360b4dff74f712b35db6a5f1bdf794a131 (patch)
tree709e75b7f7e9b6990d243457a09a678a51728eae /embassy-stm32
parentec812d3e66e699db671f262239dc7c277c6cef2d (diff)
Fix impl embedded_hal_nb::serial::Write for embassy_stm32::usart::UartTx
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/usart/mod.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index b3f8bc00c..8c9028f08 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -550,6 +550,20 @@ impl<'d, M: Mode> UartTx<'d, M> {
550 reconfigure(self.info, self.kernel_clock, config) 550 reconfigure(self.info, self.kernel_clock, config)
551 } 551 }
552 552
553 /// Write a single u8 if there is tx empty, otherwise return WouldBlock
554 pub(crate) fn nb_write(&mut self, byte: u8) -> Result<(), nb::Error<Error>> {
555 let r = self.info.regs;
556 let sr = sr(r).read();
557 if sr.txe() {
558 unsafe {
559 tdr(r).write_volatile(byte);
560 }
561 Ok(())
562 } else {
563 Err(nb::Error::WouldBlock)
564 }
565 }
566
553 /// Perform a blocking UART write 567 /// Perform a blocking UART write
554 pub fn blocking_write(&mut self, buffer: &[u8]) -> Result<(), Error> { 568 pub fn blocking_write(&mut self, buffer: &[u8]) -> Result<(), Error> {
555 let r = self.info.regs; 569 let r = self.info.regs;
@@ -1864,7 +1878,7 @@ impl<'d, M: Mode> embedded_hal_nb::serial::Read for UartRx<'d, M> {
1864 1878
1865impl<'d, M: Mode> embedded_hal_nb::serial::Write for UartTx<'d, M> { 1879impl<'d, M: Mode> embedded_hal_nb::serial::Write for UartTx<'d, M> {
1866 fn write(&mut self, char: u8) -> nb::Result<(), Self::Error> { 1880 fn write(&mut self, char: u8) -> nb::Result<(), Self::Error> {
1867 self.blocking_write(&[char]).map_err(nb::Error::Other) 1881 self.nb_write(char)
1868 } 1882 }
1869 1883
1870 fn flush(&mut self) -> nb::Result<(), Self::Error> { 1884 fn flush(&mut self) -> nb::Result<(), Self::Error> {