OpenEdv-开源电子网

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

freertos ADC数据被多个任务访问

[复制链接]

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-23
在线时间
23 小时
发表于 前天 14:57 | 显示全部楼层 |阅读模式
1金钱
实际项目中,经常会出现,ADC数据被多个模块访问的情况,在freertos中有一些疑问。
场景如下,
1. ADC1 采用DMA对多个通道数据进行采样,采样数据有 CH1:温度   CH2: 电流  CH3:湿度,
2. 在freertos 中有3个任务,对应 温度采集模块,电流控制模块,温湿度采集模块,
3. 每个任务都需要访问 ADC采样数据,进行内部运算或者控制,

问题:这3个任务应该如何与ADC进行数据通讯?

1. 消息队列
由于ADC转换是不会停止的,可以新建一个ADC任务,每100us发送一次结果到消息队列中,
会有几个问题,
1.消息队列会被写满,设置超时时间位0,可以退出,保证100us 发送数据不变
2.消息队列的深度,设置1,保证数据发送就覆盖,保证实时性
3. 多任务接受消息队列后,无论那个任务先读,其余2个任务将丢失了,那一时刻的数据,
4. 由于任务优先级问题,优先级高的任务可以实时读取到数据,优先级低的任务可能会被多次阻塞

有没有能像全局变量那样的方式,每个任务可以按自己的任务节奏,想什么时候去读都可以,且在实时性较高





回复

使用道具 举报

2

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2018-4-23
在线时间
23 小时
 楼主| 发表于 前天 15:14 | 显示全部楼层
之前用全局变量,统筹各个模块的输入输出,效率和实时性都比较好,将其转换成freeRtos后,代码复杂和操作难度,提升好多,本想一个模块建一个任务,但是会出现对任务访问的情况不知道怎么处理
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

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

GMT+8, 2026-6-4 02:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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