在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
4 l# ~- f6 F" O% ~# B5 D 3 F6 b& f s6 U; Q5 x b6 N( O
[color=rgb(51, 102, 153) !important]复制代码
( M8 y4 L$ r* D7 f* r/ i' N
! _5 L8 h2 I9 |9 R* q7 b中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
! l, U; F5 D5 ^
, a) m$ I! `6 w8 n. q' [[color=rgb(51, 102, 153) !important]复制代码
* Q5 a. m/ C% C; X2 U我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
4 e- N; C4 }$ k V+ B |