aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stm32/serial.c')
-rw-r--r--src/stm32/serial.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/stm32/serial.c b/src/stm32/serial.c
index 5806eaab..19aa048e 100644
--- a/src/stm32/serial.c
+++ b/src/stm32/serial.c
@@ -57,8 +57,11 @@ void
USARTx_IRQHandler(void)
{
uint32_t sr = USARTx->SR;
- if (sr & (USART_SR_RXNE | USART_SR_ORE))
+ if (sr & (USART_SR_RXNE | USART_SR_ORE)) {
+ // The ORE flag is automatically cleared by reading SR, followed
+ // by reading DR.
serial_rx_byte(USARTx->DR);
+ }
if (sr & USART_SR_TXE && USARTx->CR1 & USART_CR1_TXEIE) {
uint8_t data;
int ret = serial_get_tx_byte(&data);