打印
[应用相关]

按键的滤波问题

[复制链接]
1101|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bbapple|  楼主 | 2017-3-31 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#pragma vector = PORT4_VECTOR;
__interrupt void PORT4_ISR(void)
{

        wait(100);//*delay 100ms
        
        btn_flag ^= 1;
        if (btn_flag == 0)
        {
                GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
        }

        GPIO_clearInterrupt(GPIO_PORT_P4, GPIO_PIN5);

}
Port 4.5 口是按键,按一下按键,翻转LED灯 P1.1口,我的做法如下,但是总是会出现按键按了,但是LED不翻转的情况,请问大家,按键滤波用什么方法好?
按键采用外部中断的方式进行翻转LED灯
沙发
handleMessage| | 2017-3-31 21:14 | 只看该作者
if(!btn_flag)比较好,能不能看看寄存器里的值。。

使用特权

评论回复
板凳
zhouhuanの| | 2017-3-31 21:46 | 只看该作者
判断按键是否按下----延迟十几个ms左右----再次判断按键是否按下,如果按下,进行操作,否则,不进行操作; 然后等待按键释放;注意等待按键释放的时候加个超时处理。

使用特权

评论回复
地板
wanglaojii| | 2017-3-31 21:50 | 只看该作者
不建议使用中断来处理。另外如果对程序时间有要求的话,用定时器来计时延迟。。

使用特权

评论回复
5
laozhongyi| | 2017-3-31 21:52 | 只看该作者
不要在中断里延时那么久。。。。

使用特权

评论回复
6
Edisons| | 2017-3-31 21:57 | 只看该作者
需要延时的话就用定时器最好。

使用特权

评论回复
7
_gege| | 2017-3-31 22:00 | 只看该作者
用不了定时器,因为芯片已经进入低功耗的状态,按键是用来唤醒MCU的,边沿触发

使用特权

评论回复
8
Mozarts| | 2017-3-31 22:05 | 只看该作者
一般都是延时消抖,不用延时怎么消抖啊

使用特权

评论回复
9
Listate| | 2017-3-31 22:05 | 只看该作者
有抖动说明有按键按下,其实抖动不是问题。问题是不应该多次响应。只要能避免多次响应就可以。

使用特权

评论回复
10
wuhuikai| | 2017-3-31 22:49 | 只看该作者
设定2ms扫描一次按键值,连续10次*2ms都是闭合,则可以判断有按键按下。很好用,可以有效去抖

使用特权

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

本版积分规则

293

主题

1811

帖子

1

粉丝