硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1397|回复: 2
收起左侧

[FreeRTOS] FreeRtos队列问题和锁的问题

[复制链接]

9

主题

16

回帖

43

积分

新手上路

积分
43
发表于 2024-8-5 20:37:21 | 显示全部楼层 |阅读模式
如果说我现在有一个ADC采集任务,会把读取到的ADC值给到另外多个任务去读取,我该如何做,是把ADC存到队列深度为1的队列里,然后需要读取的任务都peek一下吗,还有就是我在裸机开发中会使用一个变量来记忆系统状态,例如开机,待机,关机,然后这个变量给到显示,按键操作,输出操作,这3个大函数去使用,就是在每个函数里switch(a)去判断当前状态,输出或者按键函数了可能会对这个系统变量a进行赋值,但是我该如何在Freertos去实现这个功能,总不能是我在显示任务先take 然后switch(a) 然后give,按键操作任务先take 然后switch(a) 然后give,输出操作任务先take 然后switch(a) 然后give,这样吧,我感觉在实时系统这样操作肯定是不对,希望有大佬指点
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-8-6 08:32:49 | 显示全部楼层
1、ADC这个,从楼主的描述只是需要得到的电压值,这种无需多开任务,可以使用DMA方式,需要的任务用到的时候直接读取即可。或者非DMA方式,需要的时候启动转换读取一个值即可
2、这三个函数,一个任务搞定。无需刻意开三个任务。
回复

使用道具 举报

9

主题

16

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2024-8-6 09:24:18 | 显示全部楼层
eric2013 发表于 2024-8-6 08:32
1、ADC这个,从楼主的描述只是需要得到的电压值,这种无需多开任务,可以使用DMA方式,需要的任务用到的时 ...

ADC这个经过你这么一说可能我真的是钻牛角尖了,这3个任务这里确实使用一个任务就能解决了,那什么时候才需要多开任务,这个还是不怎么能理解,主要是裸机开发习惯了,在这种实时系统就不知道怎么去弄了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:04 , Processed in 0.038779 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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