在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示: 最初(开始接收): - <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>2 Y8 J& \! [6 {4 T3 ?+ q
: {: E+ }0 l9 J, c) r[color=rgb(51, 102, 153) !important]复制代码
+ S" G% o" \5 O$ |, c1 v% z4 Z
% u; ~. s3 @8 `2 \4 A' O中断接收完成后: - <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
/ O" H% U" K* n4 s: ~4 }8 M
) Y( ?$ h. V! E[color=rgb(51, 102, 153) !important]复制代码( W" r& m4 n& x( _- s4 v: G1 C
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。 或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中? ( E0 V, U6 m9 }+ F$ G* v* H
|