硬汉嵌入式论坛

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

[FreeRTOS] 两个任务能同时调用同一函数,如按键检测吗?

[复制链接]

5

主题

19

回帖

34

积分

新手上路

积分
34
发表于 2024-11-1 23:20:57 | 显示全部楼层 |阅读模式
有两个任务都使用了按键检测,结果是其中一个任务OLED的按键效果只有在它优先级比另外高才准确响应,否则得按好几下才响应一次,请教一下这其中的原因是什么?谢谢。 Snipaste_2024-11-01_23-11-34.png
另外Key_Scan()如下: Snipaste_2024-11-01_23-19-46.png
回复

使用道具 举报

5

主题

19

回帖

34

积分

新手上路

积分
34
 楼主| 发表于 2024-11-1 23:29:24 来自手机 | 显示全部楼层
本帖最后由 zeroly 于 2024-11-2 07:07 编辑

会是因为这几个按键都是全局变量?一个任务检测的时候把另一个任务的按键检测结果覆盖为0了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-11-2 10:39:00 | 显示全部楼层
这么设计不合理。

正确姿势应该是一个任务做按键检测,将按键消息存入FIFO。然后读取FIFO键值也不要两个任务,比如你这里一个任务读K1,一个任务读2,如果两个消息都被K1任务读取了,K2任务不是没法读取了。这种情况推荐仅一个任务读取即可,读取后可以给其他任务发消息通信,也可以直接就在这个读取任务里面处理即可。

回复

使用道具 举报

5

主题

19

回帖

34

积分

新手上路

积分
34
 楼主| 发表于 2024-11-2 14:15:06 | 显示全部楼层
eric2013 发表于 2024-11-2 10:39
这么设计不合理。

正确姿势应该是一个任务做按键检测,将按键消息存入FIFO。然后读取FIFO键值也不要两个 ...

好的,感谢解答
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 05:19 , Processed in 0.043131 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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