Skip to content

Commit e862438

Browse files
committed
Clearing UART TC Flag prevents deep sleep, so do not clear it
The TC flag is used in function serial_is_tx_ongoing to check if there is an ongoing serial transmission. So this Flag must not be cleared at the end of the transmission, otherwise, serial_is_tx_ongoing will notify that TX is ongoing. The impact is that it may prevent deep sleep to be entered. Also there is no need to clear this flag at the end of the transaction because it will be cleared automatically by HW when a new transmission starts.
1 parent fcd40ab commit e862438

File tree

11 files changed

+0
-111
lines changed

11 files changed

+0
-111
lines changed

targets/TARGET_STM/TARGET_STM32F0/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -569,13 +569,6 @@ uint8_t serial_rx_active(serial_t *obj)
569569
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
570570
}
571571

572-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
573-
{
574-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
575-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
576-
}
577-
}
578-
579572
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
580573
{
581574
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -684,9 +677,6 @@ void serial_tx_abort_asynch(serial_t *obj)
684677
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
685678
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
686679

687-
// clear flags
688-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
689-
690680
// reset states
691681
huart->TxXferCount = 0;
692682
// update handle state

targets/TARGET_STM/TARGET_STM32F1/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -443,13 +443,6 @@ uint8_t serial_rx_active(serial_t *obj)
443443
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
444444
}
445445

446-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
447-
{
448-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
449-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
450-
}
451-
}
452-
453446
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
454447
{
455448
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -555,9 +548,6 @@ void serial_tx_abort_asynch(serial_t *obj)
555548
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
556549
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
557550

558-
// clear flags
559-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
560-
561551
// reset states
562552
huart->TxXferCount = 0;
563553
// update handle state

targets/TARGET_STM/TARGET_STM32F2/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -526,13 +526,6 @@ uint8_t serial_rx_active(serial_t *obj)
526526
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
527527
}
528528

529-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
530-
{
531-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
532-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
533-
}
534-
}
535-
536529
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
537530
{
538531
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -638,9 +631,6 @@ void serial_tx_abort_asynch(serial_t *obj)
638631
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
639632
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
640633

641-
// clear flags
642-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
643-
644634
// reset states
645635
huart->TxXferCount = 0;
646636
// update handle state

targets/TARGET_STM/TARGET_STM32F3/serial_device.c

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ void serial_clear(serial_t *obj)
228228
struct serial_s *obj_s = SERIAL_S(obj);
229229
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
230230

231-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
232231
__HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
233232
}
234233

@@ -486,13 +485,6 @@ uint8_t serial_rx_active(serial_t *obj)
486485
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
487486
}
488487

489-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
490-
{
491-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
492-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
493-
}
494-
}
495-
496488
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
497489
{
498490
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -601,9 +593,6 @@ void serial_tx_abort_asynch(serial_t *obj)
601593
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
602594
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
603595

604-
// clear flags
605-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
606-
607596
// reset states
608597
huart->TxXferCount = 0;
609598
// update handle state

targets/TARGET_STM/TARGET_STM32F4/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -571,13 +571,6 @@ uint8_t serial_rx_active(serial_t *obj)
571571
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
572572
}
573573

574-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
575-
{
576-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
577-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
578-
}
579-
}
580-
581574
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
582575
{
583576
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -683,9 +676,6 @@ void serial_tx_abort_asynch(serial_t *obj)
683676
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
684677
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
685678

686-
// clear flags
687-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
688-
689679
// reset states
690680
huart->TxXferCount = 0;
691681
// update handle state

targets/TARGET_STM/TARGET_STM32F7/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -524,13 +524,6 @@ uint8_t serial_rx_active(serial_t *obj)
524524
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
525525
}
526526

527-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
528-
{
529-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
530-
__HAL_UART_CLEAR_IT(huart, UART_CLEAR_TCF);
531-
}
532-
}
533-
534527
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
535528
{
536529
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -639,9 +632,6 @@ void serial_tx_abort_asynch(serial_t *obj)
639632
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
640633
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
641634

642-
// clear flags
643-
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TC);
644-
645635
// reset states
646636
huart->TxXferCount = 0;
647637
// update handle state

targets/TARGET_STM/TARGET_STM32H7/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -537,13 +537,6 @@ uint8_t serial_rx_active(serial_t *obj)
537537
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
538538
}
539539

540-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
541-
{
542-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
543-
__HAL_UART_CLEAR_IT(huart, UART_CLEAR_TCF);
544-
}
545-
}
546-
547540
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
548541
{
549542
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -652,9 +645,6 @@ void serial_tx_abort_asynch(serial_t *obj)
652645
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
653646
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
654647

655-
// clear flags
656-
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TC);
657-
658648
// reset states
659649
huart->TxXferCount = 0;
660650
// update handle state

targets/TARGET_STM/TARGET_STM32L0/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -480,13 +480,6 @@ uint8_t serial_rx_active(serial_t *obj)
480480
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
481481
}
482482

483-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
484-
{
485-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
486-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
487-
}
488-
}
489-
490483
/**
491484
* The asynchronous TX and RX handler.
492485
*
@@ -588,9 +581,6 @@ void serial_tx_abort_asynch(serial_t *obj)
588581
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
589582
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
590583

591-
// clear flags
592-
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
593-
594584
// reset states
595585
huart->TxXferCount = 0;
596586
// update handle state

targets/TARGET_STM/TARGET_STM32L1/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -479,13 +479,6 @@ uint8_t serial_rx_active(serial_t *obj)
479479
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
480480
}
481481

482-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
483-
{
484-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
485-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
486-
}
487-
}
488-
489482
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
490483
{
491484
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -591,9 +584,6 @@ void serial_tx_abort_asynch(serial_t *obj)
591584
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
592585
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
593586

594-
// clear flags
595-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
596-
597587
// reset states
598588
huart->TxXferCount = 0;
599589
// update handle state

targets/TARGET_STM/TARGET_STM32L4/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -503,13 +503,6 @@ uint8_t serial_rx_active(serial_t *obj)
503503
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
504504
}
505505

506-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
507-
{
508-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
509-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
510-
}
511-
}
512-
513506
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
514507
{
515508
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -615,9 +608,6 @@ void serial_tx_abort_asynch(serial_t *obj)
615608
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
616609
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
617610

618-
// clear flags
619-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
620-
621611
// reset states
622612
huart->TxXferCount = 0;
623613
// update handle state

targets/TARGET_STM/TARGET_STM32WB/serial_device.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -428,13 +428,6 @@ uint8_t serial_rx_active(serial_t *obj)
428428
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
429429
}
430430

431-
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
432-
{
433-
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
434-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
435-
}
436-
}
437-
438431
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
439432
{
440433
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
@@ -540,9 +533,6 @@ void serial_tx_abort_asynch(serial_t *obj)
540533
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
541534
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
542535

543-
// clear flags
544-
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
545-
546536
// reset states
547537
huart->TxXferCount = 0;
548538
// update handle state

0 commit comments

Comments
 (0)