在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>2 l- J* ?# n" A% R( @$ I7 }9 c0 I
3 o! V/ L; O- e9 j% v) l* U5 u
[color=rgb(51, 102, 153) !important]复制代码
$ ?3 b$ g* V; [2 }% k( v2 ] M/ \6 _; X% V% E2 i0 w ^5 j
中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
7 a. S" b2 P3 }4 n 5 x5 u& G+ _: D$ g
[color=rgb(51, 102, 153) !important]复制代码
! n* @, x" s$ ]( f- n( {" G我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
! [7 k. b7 H9 l `$ C$ M! D; x' O |