打印
[AI]

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

[复制链接]
723|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 | 只看该作者
直接用定时器

使用特权

评论回复
5
hjl2832| | 2023-8-30 08:29 | 只看该作者
看一下网上关于利用空闲中断接收不定长数据的文章和例子,如果芯片没有空闲中断这个功能,就用一个定时器做超时计算处理。

使用特权

评论回复
6
香水城| | 2023-8-31 12:05 | 只看该作者
那还不简单。
1、STM32芯片的uart绝大部分都设计了IDLE事件及中断,用它可以;
2、使用超时管理,每收到一个数据刷新下超时值即可;若发生超时中断则视为上次接收结束;

使用特权

评论回复
7
Mowergy| | 2023-9-2 16:45 | 只看该作者
用一个定时器做超时计算处理。

使用特权

评论回复
8
Stahan| | 2023-9-2 21:11 | 只看该作者
超时就可以

使用特权

评论回复
9
田舍郎| | 2023-9-2 23:19 | 只看该作者
空闲中断可以实现

使用特权

评论回复
10
MessageRing| | 2023-9-3 21:22 | 只看该作者
不是有个超时时间嘛

使用特权

评论回复
11
失物招領| | 2023-9-9 21:50 | 只看该作者
用定时器,计数,计数多少次发现没有数据了,就认为这一包收完了

使用特权

评论回复
12
西洲| | 2023-9-10 00:10 | 只看该作者
跟串口几没啥关系,其实就是计时的问题

使用特权

评论回复
13
春日负喧| | 2023-9-10 02:12 | 只看该作者
你用中断计数就好了

使用特权

评论回复
14
故意相遇| | 2023-9-10 04:20 | 只看该作者
一般都是有收到数据的标记位的,你检测到它是否收到数据呗,然后有个时间范围,在这段时间之内收到,算是一包数据,否则算是下一包

使用特权

评论回复
15
在曼谷的春| | 2023-9-10 06:26 | 只看该作者
我觉得还是用协议和回车来判断整个数据包比较好哦

使用特权

评论回复
16
风凉| | 2023-9-10 08:28 | 只看该作者
你网上搜一下不定长收数据就好了

使用特权

评论回复
17
捧一束彼岸花| | 2023-9-10 10:30 | 只看该作者
也没有通过时间作为结束标记的啊,都是通过定时来判断是否有数据的

使用特权

评论回复
18
未说出口的像你| | 2023-9-10 12:32 | 只看该作者
听你的描述应该就是定时接收不定长数据的操作流程

使用特权

评论回复
19
一只眠羊| | 2023-9-10 14:36 | 只看该作者
其实还是得用定时器就好了,就定时器判断这一包数据是否收完了

使用特权

评论回复
20
将爱藏于深海| | 2023-9-10 16:55 | 只看该作者
逻辑是没问题的,就判断接收标记还有就是定时器,每多少时间去判断一下接收标记是否有数据,应该就行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

403

主题

2055

帖子

2

粉丝