mirror of
https://github.com/embassy-rs/embassy.git
synced 2025-10-02 06:40:32 +00:00
Merge pull request #4406 from chemicstry/stm32_bufuart_hd
Fix stm32 buffered half-duplex uart receive
This commit is contained in:
commit
5c1d1d3766
@ -87,6 +87,8 @@ unsafe fn on_interrupt(r: Regs, state: &'static State) {
|
|||||||
|
|
||||||
r.cr1().modify(|w| {
|
r.cr1().modify(|w| {
|
||||||
w.set_tcie(false);
|
w.set_tcie(false);
|
||||||
|
// Reenable receiver for half-duplex if it was disabled
|
||||||
|
w.set_re(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
state.tx_done.store(true, Ordering::Release);
|
state.tx_done.store(true, Ordering::Release);
|
||||||
|
@ -651,7 +651,7 @@ pub fn send_break(regs: &Regs) {
|
|||||||
/// In case of readback, keep Receiver enabled
|
/// In case of readback, keep Receiver enabled
|
||||||
fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) {
|
fn half_duplex_set_rx_tx_before_write(r: &Regs, enable_readback: bool) {
|
||||||
let mut cr1 = r.cr1().read();
|
let mut cr1 = r.cr1().read();
|
||||||
if r.cr3().read().hdsel() && !cr1.te() {
|
if r.cr3().read().hdsel() {
|
||||||
cr1.set_te(true);
|
cr1.set_te(true);
|
||||||
cr1.set_re(enable_readback);
|
cr1.set_re(enable_readback);
|
||||||
r.cr1().write_value(cr1);
|
r.cr1().write_value(cr1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user