机械社区

 找回密码
 注册会员

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 624|回复: 1

UART的可能性会导致数据丢失吗?

[复制链接]
发表于 2018-9-21 11:36:45 | 显示全部楼层 |阅读模式
在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
    ' p! k9 C  R6 B2 R9 u* K( z

& x% L7 j8 }/ I& C& s- V. [  d[color=rgb(51, 102, 153) !important]复制代码
# O6 E4 D$ H' N2 \: E: W) b2 [# G
* m1 y, @7 v% p: n  @( O& I1 \9 R' @
中断接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>7 ]1 L% R# T5 s/ e# }+ i
3 b' q+ T3 Z, ^
[color=rgb(51, 102, 153) !important]复制代码
# \) z# x& T* Q$ S5 L
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?

/ T9 b# i3 t2 }0 `" B! W
回复

使用道具 举报

发表于 2018-9-22 17:53:14 | 显示全部楼层
理论上不会,UART接收完成才会产生事件/ Q: o) p% p3 M/ }# f& T! Q
UART模块内部肯定会做缓存处理。
2 I  ^8 T$ P2 }. c; F+ n如果还担心丢数据,请使用DMA大法!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|中国机械社区 ( 京ICP备10217105号,京ICP证050210号,京公网安备11010802010176 )  

GMT+8, 2019-2-21 16:47 , Processed in 0.081419 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表