Merge pull request #11938 from LMESTM/stm32_serial_clear_rxne

STM32: Update and align serial_clear implementations
pull/12019/head
Martin Kojtal 2019-11-27 16:30:11 +01:00 committed by GitHub
commit a1cddbae5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 35 additions and 23 deletions

View File

@ -281,8 +281,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -196,8 +196,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)
@ -576,7 +577,7 @@ void serial_rx_abort_asynch(serial_t *obj)
// clear flags // clear flags
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_RXNE); __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_RXNE);
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR; // Clear errors flag volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR; // Clear Rx empty flag
// reset states // reset states
huart->RxXferCount = 0; huart->RxXferCount = 0;

View File

@ -253,8 +253,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)
@ -659,7 +660,7 @@ void serial_rx_abort_asynch(serial_t *obj)
// clear flags // clear flags
__HAL_UART_CLEAR_FLAG(huart, UART_FLAG_RXNE); __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_RXNE);
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR; // Clear error flags volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR; // Clear Rx empty flags
// reset states // reset states
huart->RxXferCount = 0; huart->RxXferCount = 0;

View File

@ -228,7 +228,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
__HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); /* Clear RXNE and error flags */
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -289,8 +289,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -252,8 +252,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TXE); /* Clear RXNE and error flags */
__HAL_UART_CLEAR_IT(huart, UART_FLAG_RXNE); volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -265,8 +265,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
__HAL_UART_CLEAR_IT(huart, UART_FLAG_TXE); /* Clear RXNE and error flags */
__HAL_UART_CLEAR_IT(huart, UART_FLAG_RXNE); volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -222,8 +222,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -222,8 +222,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -241,8 +241,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)

View File

@ -186,8 +186,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj); struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index]; UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];
huart->TxXferCount = 0; /* Clear RXNE and error flags */
huart->RxXferCount = 0; volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->RDR;
HAL_UART_ErrorCallback(huart);
} }
void serial_break_set(serial_t *obj) void serial_break_set(serial_t *obj)