diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-07-07 14:05:00 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2018-07-07 14:05:00 +0000 |
commit | 0424a747af6a008eb7530f6f56c7113d7a898188 (patch) | |
tree | 41dd8029a60ac60f02312eef53c18a3bd09bf7a9 | |
parent | 3d7b366fd0fa5cb43743b58661c1027cd2623350 (diff) | |
download | ChibiOS-0424a747af6a008eb7530f6f56c7113d7a898188.tar.gz ChibiOS-0424a747af6a008eb7530f6f56c7113d7a898188.tar.bz2 ChibiOS-0424a747af6a008eb7530f6f56c7113d7a898188.zip |
Fixed bug #958.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12142 110e8d01-0319-4d1e-a829-52ad28d1bb01
-rw-r--r-- | demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile | 2 | ||||
-rw-r--r-- | demos/STM32/RT-STM32L476-DISCOVERY/Makefile | 2 | ||||
-rw-r--r-- | os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c | 18 | ||||
-rw-r--r-- | os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c | 20 | ||||
-rw-r--r-- | readme.txt | 2 |
5 files changed, 23 insertions, 21 deletions
diff --git a/demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile b/demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile index bb4c66597..3251b9d72 100644 --- a/demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile +++ b/demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile @@ -172,7 +172,7 @@ ULIBS = # Common rules
#
-RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/mk
+RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk
include $(RULESPATH)/arm-none-eabi.mk
include $(RULESPATH)/rules.mk
diff --git a/demos/STM32/RT-STM32L476-DISCOVERY/Makefile b/demos/STM32/RT-STM32L476-DISCOVERY/Makefile index 780013070..881f1aade 100644 --- a/demos/STM32/RT-STM32L476-DISCOVERY/Makefile +++ b/demos/STM32/RT-STM32L476-DISCOVERY/Makefile @@ -172,7 +172,7 @@ ULIBS = # Common rules
#
-RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/mk
+RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk
include $(RULESPATH)/arm-none-eabi.mk
include $(RULESPATH)/rules.mk
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 0321e1669..188740e5a 100644 --- a/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c +++ b/os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c @@ -215,7 +215,7 @@ static void serve_interrupt(SerialDriver *sdp) { b = oqGetI(&sdp->oqueue);
if (b < MSG_OK) {
chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY);
- u->CR1 = (cr1 & ~USART_CR1_TXEIE) | USART_CR1_TCIE;
+ u->CR1 = cr1 & ~USART_CR1_TXEIE;
}
else
u->DR = b;
@@ -237,7 +237,7 @@ static void serve_interrupt(SerialDriver *sdp) { static void notify1(io_queue_t *qp) {
(void)qp;
- USART1->CR1 |= USART_CR1_TXEIE;
+ USART1->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -245,7 +245,7 @@ static void notify1(io_queue_t *qp) { static void notify2(io_queue_t *qp) {
(void)qp;
- USART2->CR1 |= USART_CR1_TXEIE;
+ USART2->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -253,7 +253,7 @@ static void notify2(io_queue_t *qp) { static void notify3(io_queue_t *qp) {
(void)qp;
- USART3->CR1 |= USART_CR1_TXEIE;
+ USART3->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -261,7 +261,7 @@ static void notify3(io_queue_t *qp) { static void notify4(io_queue_t *qp) {
(void)qp;
- UART4->CR1 |= USART_CR1_TXEIE;
+ UART4->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -269,7 +269,7 @@ static void notify4(io_queue_t *qp) { static void notify5(io_queue_t *qp) {
(void)qp;
- UART5->CR1 |= USART_CR1_TXEIE;
+ UART5->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -277,7 +277,7 @@ static void notify5(io_queue_t *qp) { static void notify6(io_queue_t *qp) {
(void)qp;
- USART6->CR1 |= USART_CR1_TXEIE;
+ USART6->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -285,7 +285,7 @@ static void notify6(io_queue_t *qp) { static void notify7(io_queue_t *qp) {
(void)qp;
- UART7->CR1 |= USART_CR1_TXEIE;
+ UART7->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -293,7 +293,7 @@ static void notify7(io_queue_t *qp) { static void notify8(io_queue_t *qp) {
(void)qp;
- UART8->CR1 |= USART_CR1_TXEIE;
+ UART8->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
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 e4d521bd7..6031936c7 100644 --- a/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c +++ b/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c @@ -335,7 +335,7 @@ static void serve_interrupt(SerialDriver *sdp) { b = oqGetI(&sdp->oqueue);
if (b < MSG_OK) {
chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY);
- u->CR1 = (cr1 & ~USART_CR1_TXEIE) | USART_CR1_TCIE;
+ u->CR1 = cr1 & ~USART_CR1_TXEIE;
}
else
u->TDR = b;
@@ -357,7 +357,7 @@ static void serve_interrupt(SerialDriver *sdp) { static void notify1(io_queue_t *qp) {
(void)qp;
- USART1->CR1 |= USART_CR1_TXEIE;
+ USART1->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -365,7 +365,7 @@ static void notify1(io_queue_t *qp) { static void notify2(io_queue_t *qp) {
(void)qp;
- USART2->CR1 |= USART_CR1_TXEIE;
+ USART2->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -373,7 +373,7 @@ static void notify2(io_queue_t *qp) { static void notify3(io_queue_t *qp) {
(void)qp;
- USART3->CR1 |= USART_CR1_TXEIE;
+ USART3->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -381,7 +381,7 @@ static void notify3(io_queue_t *qp) { static void notify4(io_queue_t *qp) {
(void)qp;
- UART4->CR1 |= USART_CR1_TXEIE;
+ UART4->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -389,7 +389,7 @@ static void notify4(io_queue_t *qp) { static void notify5(io_queue_t *qp) {
(void)qp;
- UART5->CR1 |= USART_CR1_TXEIE;
+ UART5->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -397,7 +397,7 @@ static void notify5(io_queue_t *qp) { static void notify6(io_queue_t *qp) {
(void)qp;
- USART6->CR1 |= USART_CR1_TXEIE;
+ USART6->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -405,7 +405,7 @@ static void notify6(io_queue_t *qp) { static void notify7(io_queue_t *qp) {
(void)qp;
- UART7->CR1 |= USART_CR1_TXEIE;
+ UART7->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -413,7 +413,7 @@ static void notify7(io_queue_t *qp) { static void notify8(io_queue_t *qp) {
(void)qp;
- UART8->CR1 |= USART_CR1_TXEIE;
+ UART8->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
@@ -421,7 +421,7 @@ static void notify8(io_queue_t *qp) { static void notifylp1(io_queue_t *qp) {
(void)qp;
- LPUART1->CR1 |= USART_CR1_TXEIE;
+ LPUART1->CR1 |= USART_CR1_TXEIE | USART_CR1_TCIE;
}
#endif
diff --git a/readme.txt b/readme.txt index 59bd7f62c..89d8aebef 100644 --- a/readme.txt +++ b/readme.txt @@ -138,6 +138,8 @@ - EX: Updated LIS302DL to 1.1.0 (backported to 18.2.1).
- EX: Updated LPS25H to 1.1.0 (backported to 18.2.1).
- EX: Updated LSM303DLHC to 1.1.0 (backported to 18.2.1).
+- HAL: Fixed incorrect TCIE handling in STM32 serial drivers (bug #958)
+ (backported to 18.2.2 and 17.6.5).
- HAL: Fixed invalid period calculation in STM32 GPT driver (bug #957)
(backported to 18.2.2 and 17.6.5).
- HAL: Fixed missing USART7/8 definitions in STM32F0 HAL (bug #956)(backported
|