在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
- HAL_UART_Receive_IT(&huart1, Rx_data, 1);
/ p( b6 j5 k9 f! C
9 n& y2 l a$ [- d* O. a [color=rgb(51, 102, 153) !important]复制代码 & p4 x0 I* p2 q3 C, T f) ~
/ I1 _$ g! E* P) O" k3 d1 L2 U
中断接收完成后:
- //Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }
1 @! I, S2 w8 q+ I, D9 \
4 X& |5 s, g% ]9 @7 h [color=rgb(51, 102, 153) !important]复制代码 # Y \; S' x8 x5 H! Y4 A* A
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
( t3 F+ Q2 w2 `! ?8 c
|