打印
[应用相关]

想问下摁一次键外部中断服务程序执行多次

[复制链接]
3116|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Listate|  楼主 | 2016-11-21 20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原因是由于中断服务程序执行完后,按键还没有拉开,导致再一次进入中断
沙发
戈卫东| | 2016-11-21 20:28 | 只看该作者
还有可能是机械开关接触和断开过程中,本来就会产生多个脉冲。

使用特权

评论回复
板凳
Mozarts| | 2016-11-21 20:35 | 只看该作者
不要用外部中断做按键输入哦。。。

使用特权

评论回复
地板
_gege| | 2016-11-21 20:42 | 只看该作者
加延时不就好了。可以试试看

使用特权

评论回复
5
Listate|  楼主 | 2016-11-21 20:43 | 只看该作者
_gege 发表于 2016-11-21 20:42
加延时不就好了。可以试试看

这个不行,下降沿还是会被执行多次。

使用特权

评论回复
6
Edisons| | 2016-11-21 20:50 | 只看该作者
个人觉得还是在中断里加个延时函数好点

使用特权

评论回复
7
mcu5i51| | 2016-11-21 21:06 | 只看该作者
进入中断,按键计时清零,系统中断中测试到按键时间不为零,读键值,比较是否大于有效按键时间,有效,设置按键值

使用特权

评论回复
8
laozhongyi| | 2016-11-21 21:09 | 只看该作者
如果我一直按着这个键不放那你不就一直是死在那里了。

使用特权

评论回复
9
wanglaojii| | 2016-11-21 21:15 | 只看该作者
外部中断比较快啊。而且这个看MCU的资源的,难道非要用定时器吗?

使用特权

评论回复
10
bbapple| | 2016-11-21 21:17 | 只看该作者
状态机啊,用定时器,不浪费CUP时间。

使用特权

评论回复
11
handleMessage| | 2016-11-21 21:20 | 只看该作者
按键可以通过中断来做,也可以用中断查询方式。中断的方式需要使用去抖来做,也可以在中断里通过I/O口的状态来判断。

使用特权

评论回复
12
zhouhuanの| | 2016-11-21 21:21 | 只看该作者
这个问题太简单了吧?进入中断后先关闭总中断然后判断完了,再开启退出。

使用特权

评论回复
13
sourceInsight| | 2016-11-21 21:25 | 只看该作者
对于低功耗场合,按键是用来唤醒的,所以必须使用中断,那么可以这么做,进中断后关中断,同时开定时器扫描消抖,获得有效按键。

使用特权

评论回复
14
wforest68| | 2016-11-21 23:43 | 只看该作者
按键上接个电容滤波,然后在软件里面做防抖动处理

使用特权

评论回复
15
robter| | 2016-11-22 08:14 | 只看该作者
按一次执行一次才对,要加延时

使用特权

评论回复
16
songchenping| | 2016-11-22 09:11 | 只看该作者
加入去抖程序,

使用特权

评论回复
17
yu515301489| | 2016-11-22 09:15 | 只看该作者
laozhongyi 发表于 2016-11-21 21:09
如果我一直按着这个键不放那你不就一直是死在那里了。

做触发中断,超时也要及时跳出去。

使用特权

评论回复
18
yu515301489| | 2016-11-22 09:15 | 只看该作者
zhouhuanの 发表于 2016-11-21 21:21
这个问题太简单了吧?进入中断后先关闭总中断然后判断完了,再开启退出。 ...

恩,他们还讨论的是你出去中断了,在按键抬起的时候还是会有触发的可能。

使用特权

评论回复
19
thinkabout4451| | 2016-11-22 09:32 | 只看该作者
一定要用中断,就要外部硬件防抖。

使用特权

评论回复
20
949155525| | 2016-11-22 19:07 | 只看该作者
硬件防抖动电路和内部滤波做好,建议不要用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

161

主题

1233

帖子

1

粉丝