在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>7 H2 e: R5 x, q) |) V- ?
' W+ o! W' a# P; w. y
[color=rgb(51, 102, 153) !important]复制代码
1 f6 y$ K! [& G# C. t, ?+ ~# H5 B0 Z/ ~
中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>) `8 C" f" X. }8 _9 W
; z1 D8 \4 ]9 ?) h[color=rgb(51, 102, 153) !important]复制代码
6 V7 l! f- m* H5 x我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
, L. r8 o* Q; x% S1 L1 g3 u2 } |