在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
/ D: Z# r& d M! L$ B" [( ~+ R
$ Q* d0 z9 g) u) N[color=rgb(51, 102, 153) !important]复制代码
1 l" y! U8 l9 d8 I" r4 X2 F- g2 E. P' @/ b$ [9 o
中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
- o/ n0 S9 \, u) C2 r # x& P2 }& l8 w
[color=rgb(51, 102, 153) !important]复制代码
/ {8 |! \! ], a& C7 v/ H3 F. n我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中? ) r& T5 e4 A s0 f1 u7 g5 U
|