打印
[应用相关]

按键的滤波问题求教

[复制链接]
572|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sourceInsight|  楼主 | 2016-11-30 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32芯片,Port 4.5 口是按键,按一下按键,翻转LED灯 P1.1口,我的做法如下,但是总是会出现按键按了,但是LED不翻转的情况,请问大家,按键滤波用什么方法好?
按键采用外部中断的方式进行翻转LED灯
#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);

}
沙发
handleMessage| | 2016-11-30 20:25 | 只看该作者
if(!btn_flag)比较好,能不能看看寄存器里的值吧。。

使用特权

评论回复
板凳
zhouhuanの| | 2016-11-30 20:27 | 只看该作者
判断按键是否按下----延迟十几个ms左右----再次判断按键是否按下,如果按下,进行操作,否则,不进行操作; 然后等待按键释放。

使用特权

评论回复
地板
wanglaojii| | 2016-11-30 20:31 | 只看该作者
需要注意等待按键释放的时候加个超时处理。

使用特权

评论回复
5
laozhongyi| | 2016-11-30 20:33 | 只看该作者
这个不建议使用中断来处理。另外如果对程序时间有要求的话,用定时器来计时延迟。

使用特权

评论回复
6
Edisons| | 2016-11-30 20:38 | 只看该作者
不要在中断里延时那么久阿。
需要延时的话就用定时器

使用特权

评论回复
7
_gege| | 2016-11-30 20:41 | 只看该作者
推荐用定时器定时1ms,或者10ms。你的低功耗怎么配置的?

使用特权

评论回复
8
Mozarts| | 2016-11-30 20:46 | 只看该作者
进中断,关中断,翻转,开中断……不用延时的。

使用特权

评论回复
9
Listate| | 2016-11-30 20:48 | 只看该作者
一般都是用延时消抖的吧。。。。

使用特权

评论回复
10
在路上的程序猿| | 2016-11-30 21:50 | 只看该作者
或许按键有抖动的问题吧,记得要消抖。

使用特权

评论回复
11
黑夜之狼| | 2016-12-1 14:02 | 只看该作者
你用delay来做肯定效果不太好,可以尝试用定时器来扫描按键,不阻塞,消抖效果又好

使用特权

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

本版积分规则

138

主题

1619

帖子

1

粉丝