打印
[菜农助学交流]

求助:按键的松手检测

[复制链接]
3849|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
毅如靳往|  楼主 | 2011-10-5 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 毅如靳往 于 2011-10-5 21:54 编辑

菜农大叔的助学板上有两个用户按键,通过函数DrvGPIO_GetBit (E_GPB, 15);可以获得按键的当前状态,
加上按键消抖则可以进行相应的按键响应程序。
然而如果想要做松手检测怎么做呢 ?
请看我下面所写的代码
        
KEY1_ST = DrvGPIO_GetBit (E_GPB, 15);         //获取KEY1的值,KEY1_ST是代表KEY1的状态变量
//按键KEY1的响应动作
if (KEY1_ST == 0)
{
     delay_loop();                 //消抖
     if (KEY1_ST == 0)
    {
        if(++LED1_ST>5)        LED1_ST=0;
        didi(1);                        //形参传递为几  则蜂鸣器响几声
        while(!KEY1_ST)                          //按键松手检测
       {
            display();         //显示函数,应用状态机的显示,按键每次按下则LED灯1,2,3,4分别点亮
        }
    }
}




这个while()的用法是我在PIC单片机程序中使用过的,然而在keil中编程的时候写这个语句会卡死在这个while循环里.
想了一段时间,不知道怎么做松手检测了,请教大家.敬请各位不吝赐教.

相关帖子

沙发
nixianmin| | 2011-10-5 22:00 | 只看该作者
一般松手检测不就是判断该位的电平吗,按下为低电平,松手就是高电平呗
还有你这程序,没有读取端口的状态当然会陷入死循环
改成这个试试,要不断读端口状态
while(!DrvGPIO_GetBit (E_GPB, 15))                          //按键松手检测
{
          display();         //显示函数,应用状态机的显示,按键每次按下则LED灯1,2,3,4分别点亮
}

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
毅如靳往 + 1
板凳
毅如靳往|  楼主 | 2011-10-5 22:12 | 只看该作者
2# nixianmin

thanks
之前貌似我这么写过
忘了怎么就不成功了

唉~
总之
谢了哈~
已然成功

使用特权

评论回复
地板
hotpower| | 2011-10-6 11:16 | 只看该作者
这句话不对:while(!KEY1_ST)

必须要硬件读引脚的指令才行,KEY1_ST永远是上次读出的值。

你的DrvGPIO_GetBit (E_GPB, 15)只用了一次是不对的。
必须要在while()里用才是。
总之KEY1_ST是上次读出的值

使用特权

评论回复
5
毅如靳往|  楼主 | 2011-10-7 07:22 | 只看该作者
4# hotpower
KEY1_ST = DrvGPIO_GetBit (E_GPB, 15);         //获取KEY1的值,KEY1_ST是代表KEY1的状态变量


嗯 疏忽了  当时写这句话一是出于可移植性的考虑     二是确实不想写DrvGPIO_GetBit (E_GPB, 15);  这么长的东西   
却疏忽了   必须用硬件读引脚指令~
或者写到宏定义去可行  回头试试   
谢谢大叔指点

使用特权

评论回复
6
hotpower| | 2011-10-7 09:23 | 只看该作者
你用while去读一个值,而这个值永远不变化。那么只有死路一条。
一般读一个值,这个值由中断改写,这样不会死机的。
所以你的程序是不对的。因为你测试不到管脚的变化的。

使用特权

评论回复
7
hotpower| | 2011-10-7 09:23 | 只看该作者
你用while去读一个值,而这个值永远不变化。那么只有死路一条。
一般读一个值,这个值由中断改写,这样不会死机的。
所以你的程序是不对的。因为你测试不到管脚的变化的。

使用特权

评论回复
8
hotpower| | 2011-10-7 09:23 | 只看该作者
你用while去读一个值,而这个值永远不变化。那么只有死路一条。
一般读一个值,这个值由中断改写,这样不会死机的。
所以你的程序是不对的。因为你测试不到管脚的变化的。

使用特权

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

本版积分规则

2

主题

176

帖子

1

粉丝