STM32串口怎么清空接收缓存区
时间: 2023-10-13 20:05:01 浏览: 2029
STM32串口中断接收方式详细比较
在STM32中,可以通过以下代码清空串口接收缓存区:
```c
HAL_UART_AbortReceive(&huart1); // 终止接收
__HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 清除接收标志位
__HAL_UART_FLUSH_DRREGISTER(&huart1); // 清空接收数据寄存器
HAL_UART_Receive_DMA(&huart1, RxBuffer, RxBufferSize); // 重新开启接收
```
其中,`huart1`为串口句柄,`RxBuffer`为接收数据缓存区,`RxBufferSize`为缓存区大小。通过调用`HAL_UART_AbortReceive()`函数终止接收,然后通过`__HAL_UART_CLEAR_FLAG()`函数清除接收标志位,最后再通过`__HAL_UART_FLUSH_DRREGISTER()`函数清空接收数据寄存器,最后重新调用`HAL_UART_Receive_DMA()`函数开启接收。
阅读全文