机械必威体育网址

找回密码
注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2214 | 回复: 1
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2018-9-21 11:36:45 | 只看该作者 回帖奖励 | 倒序浏览 | 阅读模式
在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
  • HAL_UART_Receive_IT(&huart1, Rx_data, 1);
    / p( b6 j5 k9 f! C
9 n& y2 l a$ [- d* O. a
[color=rgb(51, 102, 153) !important]复制代码

& p4 x0 I* p2 q3 C, T f) ~

/ I1 _$ g! E* P) O" k3 d1 L2 U
中断接收完成后:
  • //Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  • ...
  • HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }1 @! I, S2 w8 q+ I, D9 \
4 X& |5 s, g% ]9 @7 h
[color=rgb(51, 102, 153) !important]复制代码

# Y \; S' x8 x5 H! Y4 A* A
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
( t3 F+ Q2 w2 `! ?8 c
2#
发表于 2018-9-22 17:53:14 | 只看该作者
理论上不会,UART接收完成才会产生事件
9 E; x+ q' ~- \$ N! aUART模块内部肯定会做缓存处理。G- n( G, m3 c: i, Y! ?
如果还担心丢数据,请使用DMA大法!
您需要登录后才可以回帖 登录| 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址(京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号)

GMT+8, 2024-7-30 20:31, Processed in 0.046772 second(s), 14 queries , Gzip On.

Powered byDiscuz!X3.4Licensed

? 2001-2017Comsenz Inc.

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