打印
[程序源码]

请教UART接收数据处理时机问题

[复制链接]
1373|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lxtiger|  楼主 | 2017-12-21 10:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当UART口来了数据时,接收数据进中断,指针加一,再进中断,指针再加一。。。这样就将接收的数据存到一个buffer里,但是对数据处理是什么时候处理呢?使用定时器或系统时钟每过1ms处理一次?还是每接收到一个字节进行处理判断?
程序小白。

相关帖子

沙发
ayb_ice| | 2017-12-21 11:07 | 只看该作者
中断将数据送入队列保存,主循环从队列取出数据,根据协议分析,然后处理,注意临界代码的问题

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
lxtiger + 3 很给力!
板凳
lxtiger|  楼主 | 2017-12-21 11:12 | 只看该作者
ayb_ice 发表于 2017-12-21 11:07
中断将数据送入队列保存,主循环从队列取出数据,根据协议分析,然后处理,注意临界代码的问题 ...

主循环对数据解析这个过程不了解,是主循环设置定时器,每过1ms取队列中数据进行解析吗?还是在主函数的while中?两者都可以吗?

使用特权

评论回复
地板
xuyaqi| | 2017-12-21 11:32 | 只看该作者
数据处理什么时间进行和你的数据干什么有关,如果你是要画实时曲线那么你就得定时采集数据,处理数据,如果是保存数据那就采集到一定量时来处理数据。

使用特权

评论回复
5
blust5| | 2017-12-21 11:37 | 只看该作者
这个要看数据实际用途和格式的,如果是协议数据包,可以设置一个标志位,满包或者接收延时超过包间隔就置1,然后主程序判断该标志位决定是否处理数据;如果是实时上传数据且没有协议,就需要定时处理数据,根据需要的实时性判断定时时间。

使用特权

评论回复
6
ayb_ice| | 2017-12-21 13:53 | 只看该作者
lxtiger 发表于 2017-12-21 11:12
主循环对数据解析这个过程不了解,是主循环设置定时器,每过1ms取队列中数据进行解析吗?还是在主函数的w ...

这个不一定,一般是通过状态机来处理,如果没有数据了先退出,下一循环再接着处理,如果数据足够则接收完整包。。。

使用特权

评论回复
7
ningling_21| | 2017-12-21 14:38 | 只看该作者
lxtiger 发表于 2017-12-21 11:12
主循环对数据解析这个过程不了解,是主循环设置定时器,每过1ms取队列中数据进行解析吗?还是在主函数的w ...

数据有没有固定格式,一般接收一帧完成后,主程序再处理整帧数据

使用特权

评论回复
8
lxtiger|  楼主 | 2017-12-21 15:40 | 只看该作者
ayb_ice 发表于 2017-12-21 13:53
这个不一定,一般是通过状态机来处理,如果没有数据了先退出,下一循环再接着处理,如果数据足够则接收完 ...

嗯,您说的对,使用状态机较好。谢谢~

使用特权

评论回复
9
dog_xin| | 2017-12-22 07:22 | 只看该作者
主要的焦点是这个应用是单个数据有效还是一组数据有效。不管哪种方式,一旦接受完毕就产生一个状态,主程序去处理。

使用特权

评论回复
10
zqx1000| | 2018-4-10 22:33 | 只看该作者
kankan

使用特权

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

本版积分规则

14

主题

255

帖子

2

粉丝