mirror of https://github.com/ARMmbed/mbed-os.git
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.pull/11688/head
parent
fcd40ab1a5
commit
e862438fad
|
@ -569,13 +569,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -684,9 +677,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -443,13 +443,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -555,9 +548,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -526,13 +526,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -638,9 +631,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -228,7 +228,6 @@ void serial_clear(serial_t *obj)
|
|||
struct serial_s *obj_s = SERIAL_S(obj);
|
||||
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
|
||||
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
__HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST);
|
||||
}
|
||||
|
||||
|
@ -486,13 +485,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -601,9 +593,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -571,13 +571,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -683,9 +676,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -524,13 +524,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_IT(huart, UART_CLEAR_TCF);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -639,9 +632,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -537,13 +537,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_IT(huart, UART_CLEAR_TCF);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -652,9 +645,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -480,13 +480,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The asynchronous TX and RX handler.
|
||||
*
|
||||
|
@ -588,9 +581,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -479,13 +479,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -591,9 +584,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -503,13 +503,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -615,9 +608,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
|
@ -428,13 +428,6 @@ uint8_t serial_rx_active(serial_t *obj)
|
|||
return (((HAL_UART_GetState(huart) & HAL_UART_STATE_BUSY_RX) == HAL_UART_STATE_BUSY_RX) ? 1 : 0);
|
||||
}
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_TC) != RESET) {
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_PE) != RESET) {
|
||||
|
@ -540,9 +533,6 @@ void serial_tx_abort_asynch(serial_t *obj)
|
|||
__HAL_UART_DISABLE_IT(huart, UART_IT_TC);
|
||||
__HAL_UART_DISABLE_IT(huart, UART_IT_TXE);
|
||||
|
||||
// clear flags
|
||||
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_TC);
|
||||
|
||||
// reset states
|
||||
huart->TxXferCount = 0;
|
||||
// update handle state
|
||||
|
|
Loading…
Reference in New Issue