aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/STM32/RT-STM32F401RE-NUCLEO64/Makefile2
-rw-r--r--demos/STM32/RT-STM32L476-DISCOVERY/Makefile2
-rw-r--r--os/hal/ports/STM32/LLD/USARTv1/hal_serial_lld.c18
-rw-r--r--os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c20
-rw-r--r--readme.txt2
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