在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
. p1 \2 o! P. k- e* o
, Z* _' j" j1 j& A% L; o[color=rgb(51, 102, 153) !important]复制代码
# ]9 ~, `* ?6 @2 d n6 B3 S# Z+ m! r
" S- h" Z- o8 h3 f( R$ Y中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
) C. }8 C, H8 K/ v5 m3 { 4 k& {, O1 S6 V6 C6 }) N5 H
[color=rgb(51, 102, 153) !important]复制代码. z. b% H* h' g# F; w8 J! s
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
5 q0 }5 D1 A) Q& r1 e8 A1 v4 f |