[应用相关] 想问下摁一次键外部中断服务程序执行多次

[复制链接]
 楼主| Listate 发表于 2016-11-21 20:24 | 显示全部楼层 |阅读模式
原因是由于中断服务程序执行完后,按键还没有拉开,导致再一次进入中断
戈卫东 发表于 2016-11-21 20:28 | 显示全部楼层
还有可能是机械开关接触和断开过程中,本来就会产生多个脉冲。
Mozarts 发表于 2016-11-21 20:35 | 显示全部楼层
不要用外部中断做按键输入哦。。。
_gege 发表于 2016-11-21 20:42 | 显示全部楼层
加延时不就好了。可以试试看
 楼主| Listate 发表于 2016-11-21 20:43 | 显示全部楼层
_gege 发表于 2016-11-21 20:42
加延时不就好了。可以试试看

这个不行,下降沿还是会被执行多次。
Edisons 发表于 2016-11-21 20:50 | 显示全部楼层
个人觉得还是在中断里加个延时函数好点
mcu5i51 发表于 2016-11-21 21:06 | 显示全部楼层
进入中断,按键计时清零,系统中断中测试到按键时间不为零,读键值,比较是否大于有效按键时间,有效,设置按键值
laozhongyi 发表于 2016-11-21 21:09 | 显示全部楼层
如果我一直按着这个键不放那你不就一直是死在那里了。
wanglaojii 发表于 2016-11-21 21:15 | 显示全部楼层
外部中断比较快啊。而且这个看MCU的资源的,难道非要用定时器吗?
bbapple 发表于 2016-11-21 21:17 | 显示全部楼层
状态机啊,用定时器,不浪费CUP时间。
handleMessage 发表于 2016-11-21 21:20 | 显示全部楼层
按键可以通过中断来做,也可以用中断查询方式。中断的方式需要使用去抖来做,也可以在中断里通过I/O口的状态来判断。
zhouhuanの 发表于 2016-11-21 21:21 | 显示全部楼层
这个问题太简单了吧?进入中断后先关闭总中断然后判断完了,再开启退出。
sourceInsight 发表于 2016-11-21 21:25 | 显示全部楼层
对于低功耗场合,按键是用来唤醒的,所以必须使用中断,那么可以这么做,进中断后关中断,同时开定时器扫描消抖,获得有效按键。
wforest68 发表于 2016-11-21 23:43 | 显示全部楼层
按键上接个电容滤波,然后在软件里面做防抖动处理
robter 发表于 2016-11-22 08:14 | 显示全部楼层
按一次执行一次才对,要加延时
songchenping 发表于 2016-11-22 09:11 | 显示全部楼层
加入去抖程序,
yu515301489 发表于 2016-11-22 09:15 | 显示全部楼层
laozhongyi 发表于 2016-11-21 21:09
如果我一直按着这个键不放那你不就一直是死在那里了。

做触发中断,超时也要及时跳出去。
yu515301489 发表于 2016-11-22 09:15 | 显示全部楼层
zhouhuanの 发表于 2016-11-21 21:21
这个问题太简单了吧?进入中断后先关闭总中断然后判断完了,再开启退出。 ...

恩,他们还讨论的是你出去中断了,在按键抬起的时候还是会有触发的可能。
thinkabout4451 发表于 2016-11-22 09:32 | 显示全部楼层
一定要用中断,就要外部硬件防抖。
949155525 发表于 2016-11-22 19:07 来自手机 | 显示全部楼层
硬件防抖动电路和内部滤波做好,建议不要用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

1233

帖子

1

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