From 7006611bdc3ff9113cccb10b8f6e2102563f9ac3 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 28 Aug 2017 14:44:58 +0000 Subject: Tentative fix for anomalous TC event from STM32 USARTv1 driver. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10503 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c') diff --git a/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c b/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c index bc4be0edd..b76c06ef5 100644 --- a/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c +++ b/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c @@ -213,12 +213,12 @@ static void serve_interrupt(SerialDriver *sdp) { } /* Physical transmission end.*/ - if (sr & USART_SR_TC) { + if ((cr1 & USART_CR1_TCIE) && (sr & USART_SR_TC)) { osalSysLockFromISR(); - if (oqIsEmptyI(&sdp->oqueue)) + if (oqIsEmptyI(&sdp->oqueue)) { chnAddFlagsI(sdp, CHN_TRANSMISSION_END); - u->CR1 = cr1 & ~USART_CR1_TCIE; - u->SR = ~USART_SR_TC; + u->CR1 = cr1 & ~USART_CR1_TCIE; + } osalSysUnlockFromISR(); } } -- cgit v1.2.3