Skip to content

Commit

Permalink
Merge pull request #11938 from LMESTM/stm32_serial_clear_rxne
Browse files Browse the repository at this point in the history
STM32: Update and align serial_clear implementations
  • Loading branch information
0xc0170 authored Nov 27, 2019
2 parents 57f9a1e + f20529f commit a1cddba
Show file tree
Hide file tree
Showing 11 changed files with 35 additions and 23 deletions.
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32F0/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* 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)
Expand Down
7 changes: 4 additions & 3 deletions targets/TARGET_STM/TARGET_STM32F1/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -196,8 +196,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* Clear RXNE and error flags */
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
}

void serial_break_set(serial_t *obj)
Expand Down Expand Up @@ -576,7 +577,7 @@ void serial_rx_abort_asynch(serial_t *obj)

// clear flags
__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
huart->RxXferCount = 0;
Expand Down
7 changes: 4 additions & 3 deletions targets/TARGET_STM/TARGET_STM32F2/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,8 +253,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* Clear RXNE and error flags */
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
}

void serial_break_set(serial_t *obj)
Expand Down Expand Up @@ -659,7 +660,7 @@ void serial_rx_abort_asynch(serial_t *obj)

// clear flags
__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
huart->RxXferCount = 0;
Expand Down
4 changes: 3 additions & 1 deletion targets/TARGET_STM/TARGET_STM32F3/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
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)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32F4/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* Clear RXNE and error flags */
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
}

void serial_break_set(serial_t *obj)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32F7/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -252,8 +252,9 @@ 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_IT(huart, UART_FLAG_TXE);
__HAL_UART_CLEAR_IT(huart, UART_FLAG_RXNE);
/* 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)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32H7/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,9 @@ 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_IT(huart, UART_FLAG_TXE);
__HAL_UART_CLEAR_IT(huart, UART_FLAG_RXNE);
/* 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)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32L0/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* 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)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32L1/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,8 +222,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* Clear RXNE and error flags */
volatile uint32_t tmpval __attribute__((unused)) = huart->Instance->DR;
HAL_UART_ErrorCallback(huart);
}

void serial_break_set(serial_t *obj)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32L4/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* 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)
Expand Down
5 changes: 3 additions & 2 deletions targets/TARGET_STM/TARGET_STM32WB/serial_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,9 @@ void serial_clear(serial_t *obj)
struct serial_s *obj_s = SERIAL_S(obj);
UART_HandleTypeDef *huart = &uart_handlers[obj_s->index];

huart->TxXferCount = 0;
huart->RxXferCount = 0;
/* 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)
Expand Down

0 comments on commit a1cddba

Please sign in to comment.