From 68a53fd9c8555d527996522b0f50fc19368f49fd Mon Sep 17 00:00:00 2001 From: rusEfi Date: Mon, 9 Mar 2015 10:07:02 -0500 Subject: [PATCH] auto-sync --- .../chibios/os/hal/platforms/STM32/USARTv1/serial_lld.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/firmware/chibios/os/hal/platforms/STM32/USARTv1/serial_lld.c b/firmware/chibios/os/hal/platforms/STM32/USARTv1/serial_lld.c index 5a14e455c7..01942bba00 100644 --- a/firmware/chibios/os/hal/platforms/STM32/USARTv1/serial_lld.c +++ b/firmware/chibios/os/hal/platforms/STM32/USARTv1/serial_lld.c @@ -166,11 +166,16 @@ static void serve_interrupt(SerialDriver *sdp) { /* Data available.*/ chSysLockFromIsr(); - while (sr & USART_SR_RXNE) { + while (sr & (USART_SR_RXNE | USART_SR_ORE | USART_SR_NE | USART_SR_FE | + USART_SR_PE)) { + uint8_t b; + /* Error condition detection.*/ if (sr & (USART_SR_ORE | USART_SR_NE | USART_SR_FE | USART_SR_PE)) set_error(sdp, sr); - sdIncomingDataI(sdp, u->DR); + b = u->DR; + if (sr & USART_SR_RXNE) + sdIncomingDataI(sdp, b); sr = u->SR; } chSysUnlockFromIsr();