机械必威体育网址

标题: UART的可能性会导致数据丢失吗? [打印本页]

作者: 布谷鸟科技    时间: 2018-9-21 11:36
标题: UART的可能性会导致数据丢失吗?
在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
    ! r8 u  x: k6 N0 G% g& u

& v4 t* C: z. ^[color=rgb(51, 102, 153) !important]复制代码
7 I3 a+ o9 f) r" e# q/ ^

  ]9 Q! B& I) I( P) J
中断接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>
    $ L2 f* S' _$ U% F

2 N3 z" l# Y+ Y[color=rgb(51, 102, 153) !important]复制代码

& t+ `: O; |6 V5 s# q' y
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
& q! i; B$ B% a9 ~: u! S3 w' i6 h; E

作者: NEMO_LLSoQ    时间: 2018-9-22 17:53
理论上不会,UART接收完成才会产生事件9 g) @6 N* t( A
UART模块内部肯定会做缓存处理。7 y9 e0 c! D/ J7 T
如果还担心丢数据,请使用DMA大法!




欢迎光临 机械必威体育网址 (//www.szfco.com/) Powered by Discuz! X3.4