diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs index 1cb9616d9..e61558b58 100644 --- a/embassy-stm32/src/usart/buffered.rs +++ b/embassy-stm32/src/usart/buffered.rs @@ -911,12 +911,13 @@ impl<'d> embedded_hal_02::serial::Read for BufferedUartRx<'d> { let state = self.state; let mut rx_reader = unsafe { state.rx_buf.reader() }; + let do_pend = state.rx_buf.is_full(); if let Some(data) = rx_reader.pop_one() { - Ok(data) - } else { - if state.rx_buf.is_full() { + if do_pend { self.info.interrupt.pend(); } + Ok(data) + } else { Err(nb::Error::WouldBlock) } }