[STM32F3] 大家都是怎么写按键中断处理函数的

[复制链接]
2795|10
 楼主| 平常心kxy 发表于 2014-9-8 17:57 | 显示全部楼层 |阅读模式
感觉在中断中进行延时滤波不太好。各位有什么好的方法
void EXTI15_10_IRQHandler()
{
      if(KEY1==0)
{
      delay_ms(20);
  if(KEY1==0)
  {
if(EXTI_GetFlagStatus(EXTI_Line15)==SET)
     {
    exitflag=1;
EXTI_ClearFlag(EXTI_Line15);
        EXTI_ClearITPendingBit(EXTI_Line15);  
     }
  }
}
}



wangch_sh 发表于 2014-9-8 19:10 | 显示全部楼层
你这样搞还不如用查询。
xuan309170083 发表于 2014-9-8 19:41 | 显示全部楼层
不需要识别双击的话,在中断里面直接判定按键按下,用定时器延时。

你在中断里面延时20ms简直就是。。。
 楼主| 平常心kxy 发表于 2014-9-8 19:58 | 显示全部楼层
xuan309170083 发表于 2014-9-8 19:41
不需要识别双击的话,在中断里面直接判定按键按下,用定时器延时。

你在中断里面延时20ms简直就是。。。[e ...

我觉得也不好。这样写省事。
mmuuss586 发表于 2014-9-8 20:33 | 显示全部楼层
中断程序越短越好;
既然是中断程序,进入中断后先判断是啥中断,清楚中断标志;
而不是判断按键有没有按下;
mmuuss586 发表于 2014-9-8 20:42 | 显示全部楼层
对于按键滤波程序,长按短按等判断;
完全可以用定时器配合,而不是让程序死等;
 楼主| 平常心kxy 发表于 2014-9-8 21:08 | 显示全部楼层
xuan309170083 发表于 2014-9-8 19:41
不需要识别双击的话,在中断里面直接判定按键按下,用定时器延时。

你在中断里面延时20ms简直就是。。。[e ...

求个大体程序架构
m564522634 发表于 2014-9-9 11:34 | 显示全部楼层
这样写是不对的,开个定时器吧,关键是每次按键按下有许多抖动,你要想办法软件上除了
Harvard 发表于 2014-9-9 14:06 | 显示全部楼层
死等延时是大忌 , 省事不是借口, 还是要规范起来, 利用定时扫描+ 状态机来实现.
diweo 发表于 2014-9-9 15:38 | 显示全部楼层
哎,又是一个中断里面用delay的。
i55 发表于 2014-9-9 16:23 | 显示全部楼层
stm23随便上个rtos,然后就可随便ostimedelay查询按键状态了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

107

帖子

3

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