From 032cca84a7f5206804900e460280c716fcc43481 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 11 Oct 2025 07:51:16 +1000 Subject: [PATCH] fix(radio): USART with half-duplex and RX DMA (#6637) --- radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp b/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp index 3f2136c43..6cb60fe2e 100644 --- a/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp @@ -313,8 +313,10 @@ void stm32_usart_init_rx_dma(const stm32_usart_t* usart, const void* buffer, uin // Disable IRQ based RX LL_USART_DisableIT_RXNE(usart->USARTx); - // In case TX DMA is used and IDLE IRQ is not, disable the ISR completely - if (usart->txDMA && !LL_USART_IsEnabledIT_IDLE(usart->USARTx)) { + // In case TX DMA is used, IDLE IRQ is not, and not half-duplex, + // disable the ISR completely + if (usart->txDMA && !LL_USART_IsEnabledIT_IDLE(usart->USARTx) && + !IS_HALF_DUPLEX(usart)) { NVIC_DisableIRQ(usart->IRQn); }