按键的滤波问题,请教大家

2019-03-24 08:54发布

MSP430的芯片,Port 4.5 口是按键,按一下按键,翻转LED灯 P1.1口,我的做法如下,但是总是会出现按键按了,但是LED不翻转的情况,请问大家,按键滤波用什么方法好?
按键采用外部中断的方式进行翻转LED灯

  1. #pragma vector = PORT4_VECTOR;
  2. __interrupt void PORT4_ISR(void)
  3. {

  4.         wait(100);//*delay 100ms
  5.        
  6.         btn_flag ^= 1;
  7.         if (btn_flag == 0)
  8.         {
  9.                 GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
  10.         }

  11.         GPIO_clearInterrupt(GPIO_PORT_P4, GPIO_PIN5);

  12. }
复制代码


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
kk118a
1楼-- · 2019-03-24 11:09
 精彩回答 2  元偷偷看……
汤权
2楼-- · 2019-03-24 11:50
< :TI_MSP430_内容页_SA7 --> 进入中断的时候把中断屏蔽了,中断返回之前再把中断打开。
火火山
3楼-- · 2019-03-24 12:45
kk118a 发表于 2016-10-12 21:43
你在这加延时干啥?》

不素要去抖抖抖吗?
liujinyi016
4楼-- · 2019-03-24 16:59
 精彩回答 2  元偷偷看……
chunyang
5楼-- · 2019-03-24 21:08
这里应该叫“消抖”,一般延时50mS即可。
流程:中断响应——关闭中断,清中断标志(有些MCU不需要,响应后会自动清,具体看器件手册确定)——延时50mS——读键值——判断键值是否为逻辑0(假设逻辑0是中断引发条件,这里相当于第二次读键值,消抖的意义即在此)——做相应处理——开中断——返回。
数码小叶
6楼-- · 2019-03-24 21:25
目测应该解决问题了

一周热门 更多>