aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/usart/buffered.rs2
-rw-r--r--embassy-stm32/src/usart/mod.rs2
2 files changed, 3 insertions, 1 deletions
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs
index 73ab46404..729440c46 100644
--- a/embassy-stm32/src/usart/buffered.rs
+++ b/embassy-stm32/src/usart/buffered.rs
@@ -87,6 +87,8 @@ unsafe fn on_interrupt(r: Regs, state: &'static State) {
87 87
88 r.cr1().modify(|w| { 88 r.cr1().modify(|w| {
89 w.set_tcie(false); 89 w.set_tcie(false);
90 // Reenable receiver for half-duplex if it was disabled
91 w.set_re(true);
90 }); 92 });
91 93
92 state.tx_done.store(true, Ordering::Release); 94 state.tx_done.store(true, Ordering::Release);
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 8c9028f08..5bece6d66 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -651,7 +651,7 @@ pub fn send_break(regs: &Regs) {
651/// In case of readback, keep Receiver enabled 651/// In case of readback, keep Receiver enabled
652fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) { 652fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) {
653 let mut cr1 = r.cr1().read(); 653 let mut cr1 = r.cr1().read();
654 if r.cr3().read().hdsel() && !cr1.te() { 654 if r.cr3().read().hdsel() {
655 cr1.set_te(true); 655 cr1.set_te(true);
656 cr1.set_re(enable_readback); 656 cr1.set_re(enable_readback);
657 r.cr1().write_value(cr1); 657 r.cr1().write_value(cr1);