[STM32F3] 这样写按键触发外部中断处理函数行不行

[复制链接]
1932|14
 楼主| 平常心kxy 发表于 2014-9-8 23:02 | 显示全部楼层 |阅读模式
感觉还是不能避免重复触发中断的问题
5CDJXY){9D~AG_P05OEAA70.jpg
 楼主| 平常心kxy 发表于 2014-9-8 23:08 | 显示全部楼层
感觉应该这样
R[FTI2J@L4P`DSC6T}8@Z(Q.jpg
huzi2099 发表于 2014-9-8 23:08 | 显示全部楼层
是消抖程序怎么写的问题.
SLHSu37 发表于 2014-9-9 08:59 | 显示全部楼层
这样写没什么问题呀
gonggu8181 发表于 2014-9-9 09:20 | 显示全部楼层
  1. void EXTI15_10_IRQHandler(void)
  2. {
  3.         if(EXTI_GetITStatus(EXTI_Line10) != RESET && exitflag == 0)
  4.         {
  5.             
  6.         }
  7. }
主程序后面参考二楼就可以
m564522634 发表于 2014-9-9 11:49 | 显示全部楼层
消抖都没做你觉得行吗
diweo 发表于 2014-9-9 16:12 | 显示全部楼层
我是觉得按键没有必要用中断,扫描就可以了。
光晔秋秋 发表于 2014-9-9 18:53 | 显示全部楼层
赞同楼上,没必要浪费中断,扫描就可以了
 楼主| 平常心kxy 发表于 2014-9-9 18:57 | 显示全部楼层
gonggu8181 发表于 2014-9-9 09:20
主程序后面参考二楼就可以

谢谢。这样写确实比较好。不知道用状态机怎么设计复杂的按键扫描程序
 楼主| 平常心kxy 发表于 2014-9-9 18:57 | 显示全部楼层
diweo 发表于 2014-9-9 16:12
我是觉得按键没有必要用中断,扫描就可以了。

我只是用外部中断触发一个操作
diweo 发表于 2014-9-9 19:21 | 显示全部楼层
平常心kxy 发表于 2014-9-9 18:57
我只是用外部中断触发一个操作

触发一个操作是可以的,关键是要处理好误触发和重复触发的情况。
BitFu 发表于 2014-9-9 21:31 | 显示全部楼层
按键最好用定时器扫描方式去做
QuakeGod 发表于 2014-9-9 22:18 | 显示全部楼层
QuakeGod 发表于 2014-9-9 22:24 | 显示全部楼层
偶一直用定时器消抖的办法,只是那时候没有用语言描述,后来论坛里有人说出了偶的心声。
首先要明确,什么是消抖,按键的多次脉冲是由于按键的机械跳动引起的,而不是干扰。
那么,当第一个脉冲到来时,就已经可以肯定是按键被按下了,那就完全没有必要再延时几十个mS单纯为了去抖动。
所以,第一个脉冲到来时,该干什么就去干什么好了,消抖最简单了,只是简单的把这个按键的后续信号屏蔽掉几十个mS即可完美消除抖动,
如果嫌不过瘾,屏蔽掉500mS也未尝不可。防止有人乱按键。也不会引起按键反应的延迟。

QuakeGod 发表于 2014-9-9 22:28 | 显示全部楼层
就像偶们平时用的PC键盘和鼠标一样,鼠标按键也同样存在抖动的问题,如果每次按键都需要经过几十mS时间才有响应,那玩FPS游戏的人岂不是要疯掉。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

107

帖子

3

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