打印

请教 关于uCOS中键盘响应的问题

[复制链接]
3059|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uqiang|  楼主 | 2007-9-4 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好
我在编写uCOS时发现的了一个问题无法解决!请高手帮忙!
假设有两个任务,在两个任务里都用到了“if (PC_GetKey(&key) == TRUE)”
语句来检测键盘的输入情况。问题是:当运行时优先级较高的那个任务中的“if (PC_GetKey(&key) == TRUE)”不执行。优先级较低的那个任务中的此语句反而执行了。若只在优先级较高的那个任务执行此语句,正常。

我猜想是不是 if (PC_GetKey(&key) == TRUE) 用到共享资源什么的。是不是要加信号量等 若是的怎么加


首先 谢谢 大家的留言。是不是 键盘响应这个事件 就不能在两个任务中实现呢

相关帖子

沙发
soso| | 2007-9-5 07:14 | 只看该作者

觉得你的键盘设计思路很乱

   估计这就是所谓的代码的重入问题。你为何不设置一个task定时扫描键盘,然后用信号灯广播给全局?谁要用键值,都要申请信号灯。

使用特权

评论回复
板凳
ayb_ice| | 2007-9-5 07:47 | 只看该作者

访问共享资源当然要用信号量...

不过具体来说,你的思路有问题,你见过WINDOWS里有按键同时被几个程序使用的情况吗...
任何情况肯定只能有一个任务接受按键,否则不乱了...

使用特权

评论回复
地板
computer00| | 2007-9-5 08:50 | 只看该作者

处理按键由一个专门的任务负责,然后根据情况发送给不同

使用特权

评论回复
5
walnutcy| | 2007-9-5 08:59 | 只看该作者

也可以每个任务一个消息队列,然后把消息广播,

呵呵,大家都可以处理,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝