diff options
| -rw-r--r-- | embassy-stm32/src/usart/buffered.rs | 2 | ||||
| -rw-r--r-- | embassy-stm32/src/usart/mod.rs | 2 |
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 |
| 652 | fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) { | 652 | fn 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); |
