布谷鸟科技 发表于 2018-9-21 11:36:45

UART的可能性会导致数据丢失吗?

在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:最初(开始接收):
[*]<font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>

复制代码

中断接收完成后:
[*]<font size="4">//Interrupt callback routine
[*]void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
[*]{
[*]    ...
[*]    HAL_UART_Receive_IT(&huart, Rx_data, 1);
[*]}</font>

复制代码
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?

NEMO_LLSoQ 发表于 2018-9-22 17:53:14

理论上不会,UART接收完成才会产生事件
UART模块内部肯定会做缓存处理。
如果还担心丢数据,请使用DMA大法!
页: [1]
查看完整版本: UART的可能性会导致数据丢失吗?