按键消抖的问题

[复制链接]
3476|23
 楼主| bryanlee512 发表于 2015-12-29 12:45 | 显示全部楼层 |阅读模式
pi, gp, IO, GPIO, ST
/* GPIO ISR */
void gpio_isr(void)
{
    volatile uint32_t status,i;
    status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
    MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);

    /* Toggling the output on the LED */
    if(status & GPIO_PIN1)
    {
      for(i=5000;i>0;i--);
      if(status & GPIO_PIN1){
                MAP_GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
                                          }
      }
}
msp432实现按键中断点亮/熄灭p1.1led,中断程序内,加了延时后,按键消抖的效果还是不理想,不知道哪儿出问题。
dirtwillfly 发表于 2015-12-29 12:48 | 显示全部楼层
又一个在中断服务程序里延时的。。
你的for(i=5000;i>0;i--);这一句延时多长时间啊?
 楼主| bryanlee512 发表于 2015-12-29 17:16 | 显示全部楼层
dirtwillfly 发表于 2015-12-29 12:48
又一个在中断服务程序里延时的。。
你的for(i=5000;i>0;i--);这一句延时多长时间啊? ...

这个只是试一下,不在中断里延时,还有什么方法实现?
dirtwillfly 发表于 2015-12-29 20:59 | 显示全部楼层
bryanlee512 发表于 2015-12-29 17:16
这个只是试一下,不在中断里延时,还有什么方法实现?

有的。有很多方法,延时最好用定时器
mmbs 发表于 2015-12-29 22:10 | 显示全部楼层
可以使用物理消抖
mmbs 发表于 2015-12-29 22:12 | 显示全部楼层
或者使用延时检测,但是浪费资源。
i1mcu 发表于 2015-12-29 22:20 | 显示全部楼层
可以使用tft的触摸
i1mcu 发表于 2015-12-29 22:23 | 显示全部楼层
直接使用内部的ad处理。
小鱼儿1045 发表于 2015-12-30 08:57 | 显示全部楼层
状态机扫描按键,中断里做延时,暴殄天物!中断处理原则:快进快出!
lgq1542380129 发表于 2015-12-30 09:35 | 显示全部楼层
定时器扫描,定时5-10ms;在定时器中断里设置标志位;等标志位为2时说明有键按下。
幸福至上 发表于 2015-12-30 10:44 | 显示全部楼层
楼主你这个中断的for循环延时后,是不是应该重新获取一次按键对应端口的状态,再进行且运算if(status & GPIO_PIN1),{翻转LED......}
 楼主| bryanlee512 发表于 2015-12-30 18:26 | 显示全部楼层
(status & GPIO_PIN1)不就是重新获取按键端口状态么
尤彼卡 发表于 2015-12-31 14:21 | 显示全部楼层
这个只是试一下,不在中断里延时,还有什么方法实现?

在中断里弄个计数的变量,延时在主函数做
 楼主| bryanlee512 发表于 2015-12-31 15:41 | 显示全部楼层
尤彼卡 发表于 2015-12-31 14:21
在中断里弄个计数的变量,延时在主函数做

有具体代码可参考么
可可球 发表于 2015-12-31 16:38 | 显示全部楼层
if(x0==0)         
{
   delay(1000);        
   if(x0==0)
   {
     ....
这样做试试
mmbs 发表于 2016-1-3 22:34 | 显示全部楼层
软件消抖能行么
mmbs 发表于 2016-1-3 22:34 | 显示全部楼层
还得检测弹起才行
尤彼卡 发表于 2016-1-11 21:24 | 显示全部楼层
也可以用键值,度前后时刻的键值
cemaj 发表于 2016-1-11 22:14 | 显示全部楼层
太浪费时间了。
cemaj 发表于 2016-1-11 22:17 | 显示全部楼层
在中断里面不要做太多的处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

72

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部