diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-02-16 07:54:12 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-02-16 07:54:12 +0000 |
commit | dedfd49decb3c532f81bee59a41427d8bd36c938 (patch) | |
tree | 6b8f24727521f8358e19607c4b05ba3681626c76 /os | |
parent | ab87baa16a80b6c75799aa13b36ec294769d426c (diff) | |
download | ChibiOS-dedfd49decb3c532f81bee59a41427d8bd36c938.tar.gz ChibiOS-dedfd49decb3c532f81bee59a41427d8bd36c938.tar.bz2 ChibiOS-dedfd49decb3c532f81bee59a41427d8bd36c938.zip |
Improved TC handling in STM32 USART drivers.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11497 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os')
-rw-r--r-- | os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c b/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c index b78b6c195..4b5f20836 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c +++ b/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c @@ -334,11 +334,12 @@ static void serve_interrupt(SerialDriver *sdp) { }
/* Physical transmission end.*/
- if (isr & USART_ISR_TC) {
+ if ((cr1 & USART_CR1_TCIE) && (isr & USART_ISR_TC)) {
osalSysLockFromISR();
- if (oqIsEmptyI(&sdp->oqueue))
+ if (oqIsEmptyI(&sdp->oqueue)) {
chnAddFlagsI(sdp, CHN_TRANSMISSION_END);
- u->CR1 = cr1 & ~USART_CR1_TCIE;
+ u->CR1 = cr1 & ~USART_CR1_TCIE;
+ }
osalSysUnlockFromISR();
}
}
|