diff --git a/bsp/stm32f7-disco/drivers/drv_usart.c b/bsp/stm32f7-disco/drivers/drv_usart.c index 2c15fafc2988aa8f5f9fbdb25371c40ef2df26e7..f64f89e378b1dfef6f0def775d92c34d67dc2b4c 100644 --- a/bsp/stm32f7-disco/drivers/drv_usart.c +++ b/bsp/stm32f7-disco/drivers/drv_usart.c @@ -106,8 +106,9 @@ static int drv_putc(struct rt_serial_device *serial, char c) struct drv_uart *uart; RT_ASSERT(serial != RT_NULL); uart = (struct drv_uart *)serial->parent.user_data; - __HAL_UART_CLEAR_FLAG(&(uart->UartHandle), UART_FLAG_TC); + __HAL_UART_CLEAR_IT(&(uart->UartHandle), UART_CLEAR_TCF); uart->UartHandle.Instance->TDR = c; + while (__HAL_UART_GET_FLAG(&(uart->UartHandle), UART_FLAG_TC) == RESET); return 1; }