OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3750|回复: 3

freertos的队列在串口中断的应用

[复制链接]

4

主题

4

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2020-7-16
在线时间
14 小时
发表于 2022-1-3 14:41:52 来自手机 | 显示全部楼层 |阅读模式
如题,刚接触rtos,之前都是裸机开发,串口数据都是在串口中断中把接收到的数据存入循环缓存区,然后在主循环中按照协议解析,现在想把代码移植到freertos中,想请问一下各位大佬,以下两种方式哪种好一点呢:
1.串口接收到的数据存到消息队列里面,然后定时去查看队列中是否有数据,有数据则获取出来进行解析;
2.继续用全局的循环缓存区。
各位平时都是怎么处理串口接收到的数据呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2022-1-3 15:18:20 | 显示全部楼层
全局缓存区线接收数据,可以通过标志位或者信号量通知任务接收数据完成,然后可以处理数据
回复 支持 反对

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2022-1-9 22:17:08 | 显示全部楼层
用队列好点,不过要配置好队列的长度,别溢出了
回复 支持 反对

使用道具 举报

19

主题

334

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1108
金钱
1108
注册时间
2018-11-6
在线时间
240 小时
发表于 2022-1-25 14:37:37 | 显示全部楼层
用队列+环形缓冲区。

   1、中断服务程序用队列发送报文数据
   2、接收任务通过队列接收报文数据
   3、定义一个环形缓冲区,装载接收的报文内容
          3.1、如果只有接收任务在处理环形缓冲区,则可以直接像裸机一样使用全局环形缓冲区。
          3.2、如果不仅接收任务要读写环形缓冲区的内容,其它任务也读写环形缓冲区,则用信号量锁定环形缓冲区
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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