Merge pull request #4406 from chemicstry/stm32_bufuart_hd

Fix stm32 buffered half-duplex uart receive
This commit is contained in:
Dario Nieuwenhuis 2025-07-16 18:13:11 +00:00 committed by GitHub
commit 5c1d1d3766
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 1 deletions

View File

@ -87,6 +87,8 @@ unsafe fn on_interrupt(r: Regs, state: &'static State) {
r.cr1().modify(|w| {
w.set_tcie(false);
// Reenable receiver for half-duplex if it was disabled
w.set_re(true);
});
state.tx_done.store(true, Ordering::Release);

View File

@ -651,7 +651,7 @@ pub fn send_break(regs: &Regs) {
/// In case of readback, keep Receiver enabled
fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) {
let mut cr1 = r.cr1().read();
if r.cr3().read().hdsel() && !cr1.te() {
if r.cr3().read().hdsel() {
cr1.set_te(true);
cr1.set_re(enable_readback);
r.cr1().write_value(cr1);