From ac7c44c1d1465bd125ef9a2c6da7e3b42a52569c Mon Sep 17 00:00:00 2001 From: Tobias Naumann Date: Fri, 21 Mar 2025 13:27:29 +0100 Subject: [PATCH] Use write closure to clear idle flag, only read rdr on usart versions which need it --- embassy-stm32/src/usart/ringbuffered.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/embassy-stm32/src/usart/ringbuffered.rs b/embassy-stm32/src/usart/ringbuffered.rs index f1161aa79..d76a52d1e 100644 --- a/embassy-stm32/src/usart/ringbuffered.rs +++ b/embassy-stm32/src/usart/ringbuffered.rs @@ -261,14 +261,13 @@ fn clear_idle_flag(r: Regs) -> Sr { let sr = sr(r).read(); - // This read also clears the error and idle interrupt flags on v1. - unsafe { rdr(r).read_volatile() }; #[cfg(any(usart_v3, usart_v4))] - { - let mut clear_idle = regs::Icr(0); - clear_idle.set_idle(true); - r.icr().write_value(clear_idle); - } + r.icr().write(|w| w.set_idle(true)); + #[cfg(not(any(usart_v3, usart_v4)))] + unsafe { + // This read also clears the error and idle interrupt flags on v1. + rdr(r).read_volatile() + }; r.cr1().modify(|w| w.set_idleie(true));