机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2018-9-21 11:36:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:
最初(开始接收):
  • <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>2 l- J* ?# n" A% R( @$ I7 }9 c0 I
3 o! V/ L; O- e9 j% v) l* U5 u
[color=rgb(51, 102, 153) !important]复制代码

$ ?3 b$ g* V; [2 }% k( v2 ]  M
/ \6 _; X% V% E2 i0 w  ^5 j
中断接收完成后:
  • <font size="4">//Interrupt callback routine
  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  • {
  •     ...
  •     HAL_UART_Receive_IT(&huart, Rx_data, 1);
  • }</font>
    7 a. S" b2 P3 }4 n
5 x5 u& G+ _: D$ g
[color=rgb(51, 102, 153) !important]复制代码

! n* @, x" s$ ]( f- n( {" G
我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。
或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?

! [7 k. b7 H9 l  `$ C$ M! D; x' O
回复

使用道具 举报

2#
发表于 2018-9-22 17:53:14 | 只看该作者
理论上不会,UART接收完成才会产生事件
' C8 X* r( F2 N6 k5 y0 ?UART模块内部肯定会做缓存处理。. S& Q# g5 b9 R5 B' Y/ M$ H
如果还担心丢数据,请使用DMA大法!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-1 09:50 , Processed in 0.045694 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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