大家有什么好的外部中断按键去抖的方法吗??都快崩溃了。。。

2019-03-23 15:38发布

大家有什么好的外部中断按键去抖的方法吗??因为比赛的需要,要让输出步进可调,所以打算在外部中断里面改输出值,但是按键抖个不停啊,已经软件延时消抖了,还是抖啊。用的是stm32f407。
代码如下,有什么需要改的吗??
  1. void EXTI2_IRQHandler(void)
  2. {
  3.   EXTI->IMR&=~(1<<2);
  4.   if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==0)         
  5.   {
  6.     delay_ms(30);
  7.     if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)==0)
  8.     {
  9.       vtg-=200;
  10.       DAC_SetVol(vtg);
  11.     }
  12.   }
  13.   EXTI_ClearITPendingBit(EXTI_Line2);  
  14.   EXTI->IMR|=1<<2;
  15. }
复制代码
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
ienglgge
1楼-- · 2019-03-25 05:26
 精彩回答 2  元偷偷看……
chunyang
2楼-- · 2019-03-25 06:01
50--100mS后再次读,然后比较数值,必要时可连续判断两次。这是常规消抖算法,如果还有问题,说明要么你编程有误,要么开关有问题。
jianping-sun
3楼-- · 2019-03-25 09:17
chunyang 发表于 2015-4-29 22:45
50--100mS后再次读,然后比较数值,必要时可连续判断两次。这是常规消抖算法,如果还有问题,说明要么你编程有误,要么开关有问题。

要50-100ms那么久啊。。。。我可以保证中断进去了
jianping-sun
4楼-- · 2019-03-25 13:22
 精彩回答 2  元偷偷看……
jianping-sun
5楼-- · 2019-03-25 13:27
ienglgge 发表于 2015-4-29 21:50
可以不用中断判断,主循环中,查询,检测到按键按下,延时0.1s判断一次,如果符合,再延时0.1s判断一次。

主要问题是主函数两个子函数都是死循环
Li_Lei
6楼-- · 2019-03-25 14:43
别死循环,看,记状态,去干别的,再看,比较出结果

一周热门 更多>