OpenEdv-开源电子网
标题: FREERTOS下的键盘输入相关问题! [打印本页]
作者: sinus 时间: 2022-11-20 16:45
标题: FREERTOS下的键盘输入相关问题!
不懂就问,当在freertos,我们进到某一个任务,需要获取键盘的值,除了while()一直等(得到要的值就break出来)还有其他方法吗?如果使用while等是要不要加延时好?
请懂得大侠指导一下!
两问。
作者: 正点原子 时间: 2022-11-22 00:11
直接搞个任务,死循环扫描即可,任务优先级可以调低点
作者: 霸王猫 时间: 2022-11-22 09:07
1、直接搞个任务,死循环扫描即可
2、任务优先级可以调低点
3、采集到按键,用消息队列发送给主任务
消息队列用自定义协议
例如:消息队列缓冲区buffer[]
buffer[0]=1 代表 按键任务发送的消息队列
buffer[1]= 按键码
作者: sinus 时间: 2022-11-22 12:33
本帖最后由 sinus 于 2022-11-22 12:38 编辑
感谢回复蛤,但是我这边需要按键处理的任务有多个,且进任务后有类似状态机的需要按钮,处理方式是:每个需要需要键值的时候就等队列的消息吗?如果不是或者有更好的方式,请指导一下。
作者: sinus 时间: 2022-11-22 12:38
感谢回复蛤,但是我这边需要按键处理的任务有多个,且进任务后有类似状态机的需要按钮,处理方式是:每个需要需要键值的时候就等队列的消息吗?如果不是或者有更好的方式,请指导一下。
作者: 霸王猫 时间: 2022-11-22 18:40
假如有4个任务
(1)、按键任务,任务A,任务B,任务C
消息队列只支持以下2种方法:
1、一对一
按键任务给任务A发送按键码。 -----> 任务A
2、多对一
按键任务给任务A发送键码
任务B给任务A发送模拟量AI数据 -----> 任务A
任务C给任务A发送开关量DI数据。
消息队列不支持:一对多和多对多。
不支持:一对多
例如: 按键任务给任务A发送按键码。
按键任务给任务B发送按键码。
按键任务给任务c发送按键码。
不支持:多对多
例如: 按键任务给任务A发送按键码。
按键任务给任务B发送按键码。
任务C任务给任务A发送按键码。
你提出的【但是我这边需要按键处理的任务有多个】不符合FREERTOS消息队列要求, FREERTOS解决方案:
把你【需要按键处理的任务有多个】合并成一个任务。
作者: 霸王猫 时间: 2022-11-24 17:08
(, 下载次数: 0)