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

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条回答
jianping-sun
1楼-- · 2019-03-24 11:08
 精彩回答 2  元偷偷看……
ljj3166
2楼-- · 2019-03-24 15:56
不嫌硬件麻烦的话
外加锁存器或者触发器
247153481
3楼-- · 2019-03-24 17:34
有硬件消抖电路啊
盛夏之蝉
4楼-- · 2019-03-24 17:37
 精彩回答 2  元偷偷看……
dontium
5楼-- · 2019-03-24 22:26
jianping-sun 发表于 2015-4-29 17:59
估计要多长呢。。。

根据情况决定去抖时间。但一般要长一0.1S才对,--------- 自己可以感觉一下,按一次键的时间会有多长,保证长于最短时间
Aragorn
6楼-- · 2019-03-25 03:14
真是麻烦透顶,为何要用中断?只有需要快速响应的地方才会用中断,按键这种地方不但不需要快速响应,响应快了反而会带来更多问题。别用中断了,改用扫描吧。每几十ms读一次,每两次值一样时才当成一次正确的值。

一周热门 更多>