找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2535|回复: 1

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

[复制链接]
发表于 2018-9-21 11:36:45 | 显示全部楼层 |阅读模式
在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>/ S3 A% e& [+ [0 c
0 ~" ]  @3 U3 a1 J( l+ T
[color=rgb(51, 102, 153) !important]复制代码

3 X. P0 Q: G. A6 [, K1 z) A

' ^- w3 r! X! a9 [% i2 m% F
中断接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>
    9 [- [4 W( }6 V5 f) e# m; F  M

" t, Y# _3 m- E4 C# v* j& ]/ ?[color=rgb(51, 102, 153) !important]复制代码

4 @5 R) b3 f8 ]) I$ O8 f
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?

! E: o% B4 \& I; M5 E
回复

使用道具 举报

发表于 2018-9-22 17:53:14 | 显示全部楼层
理论上不会,UART接收完成才会产生事件: J- s% W8 d, [1 I$ H2 u
UART模块内部肯定会做缓存处理。* O: [! x1 z4 E" t" D$ A/ Y5 b1 H1 p
如果还担心丢数据,请使用DMA大法!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-6-19 18:46 , Processed in 0.055050 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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