[AI] 使用uart3进行数据通信,如何实现时间作为结束标志?

[复制链接]
1181|12
 楼主| stormwind123 发表于 2023-8-28 16:29 | 显示全部楼层 |阅读模式
使用uart3进行数据通信,如果不想在数据结尾加类似’\n’的符号作为结束标志,而是想使用时间作为结束标志,如几百毫秒没收到数据就认为一组数据接收完毕,请问有什么办法实现吗。
sfd123 发表于 2023-8-29 12:36 | 显示全部楼层
1、串口的空闲中断了解一下
2、如果1不合适,你可以按照你的思路,用个定时器就可以了
coody 发表于 2023-8-29 13:05 | 显示全部楼层
超时了解一下
guoyt 发表于 2023-8-29 19:48 | 显示全部楼层
直接用定时器
hjl2832 发表于 2023-8-30 08:29 | 显示全部楼层
看一下网上关于利用空闲中断接收不定长数据的文章和例子,如果芯片没有空闲中断这个功能,就用一个定时器做超时计算处理。
香水城 发表于 2023-8-31 12:05 | 显示全部楼层
那还不简单。
1、STM32芯片的uart绝大部分都设计了IDLE事件及中断,用它可以;
2、使用超时管理,每收到一个数据刷新下超时值即可;若发生超时中断则视为上次接收结束;
Mowergy 发表于 2023-9-2 16:45 | 显示全部楼层
用一个定时器做超时计算处理。
Stahan 发表于 2023-9-2 21:11 | 显示全部楼层
超时就可以
田舍郎 发表于 2023-9-2 23:19 来自手机 | 显示全部楼层
空闲中断可以实现
MessageRing 发表于 2023-9-3 21:22 | 显示全部楼层
不是有个超时时间嘛
失物招領 发表于 2023-9-9 21:50 | 显示全部楼层
用定时器,计数,计数多少次发现没有数据了,就认为这一包收完了
西洲 发表于 2023-9-10 00:10 | 显示全部楼层
跟串口几没啥关系,其实就是计时的问题
春日负喧 发表于 2023-9-10 02:12 | 显示全部楼层
你用中断计数就好了
故意相遇 发表于 2023-9-10 04:20 | 显示全部楼层
一般都是有收到数据的标记位的,你检测到它是否收到数据呗,然后有个时间范围,在这段时间之内收到,算是一包数据,否则算是下一包
在曼谷的春 发表于 2023-9-10 06:26 | 显示全部楼层
我觉得还是用协议和回车来判断整个数据包比较好哦
风凉 发表于 2023-9-10 08:28 | 显示全部楼层
你网上搜一下不定长收数据就好了
捧一束彼岸花 发表于 2023-9-10 10:30 | 显示全部楼层
也没有通过时间作为结束标记的啊,都是通过定时来判断是否有数据的
未说出口的像你 发表于 2023-9-10 12:32 | 显示全部楼层
听你的描述应该就是定时接收不定长数据的操作流程
一只眠羊 发表于 2023-9-10 14:36 | 显示全部楼层
其实还是得用定时器就好了,就定时器判断这一包数据是否收完了
将爱藏于深海 发表于 2023-9-10 16:55 | 显示全部楼层
逻辑是没问题的,就判断接收标记还有就是定时器,每多少时间去判断一下接收标记是否有数据,应该就行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

605

主题

3747

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部