在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
( w* w! e5 \, @. |1 w7 F
& g+ u' \" q/ F, Q. X[color=rgb(51, 102, 153) !important]复制代码2 b9 W& e4 o% d2 Y3 s
# _# Z$ {1 }$ O. Y" W8 d中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>. b7 g7 @# d: h* J9 a% Z! P% Q
' y- X) _$ ?3 A) G% P) X# F" p
[color=rgb(51, 102, 153) !important]复制代码- V& }5 n2 }( ^1 @
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中? . u2 T$ U) [- a7 s5 l
|