历史上的今天
今天是:2024年08月24日(星期六)
2019年08月24日 | stm32 外部中断 按键的误触发
2019-08-24 来源:eefocus
最近在调试按键作为外部中断exti进行触发动作,发现每次按键按下和按键抬起都会多次进入中断函数,造成程序不稳定,经过反复调试和查阅资料,最后终于已经把这个问题解决,现在总结一下:
1、EXTI重复配置两次导致误触发中断的问题
如果重复两次配置EXTI的话,由于第一次已经打开中断,当进行第二次配置中断的时候,会把中断引脚首先配置成默认引脚,然后在配置成目的引脚,这样由于默认引脚是低电平,所以在切换的过程中就会进入一次中断!!具体请参见:http://bbs.elecfans.com/jishu_942011_1_1.html
2、STM32F401 外部中断误触发问题
现象:调试STM32F411低功耗的时候,使用的PA1做个唤醒源,发现在没有触发EXTI的时候,MCU居然被唤醒。
原因:PA1配置成EXTI(上拉输入),经常被误触发
解决方式:将PA1配置成浮空输入(GPIO_PuPd_NOPULL),并且外部上拉一个4.7k电阻,就不会误触发了。
这种bug的原因一直没有搞清,先记下省的以后就忘记了,猜测可能是STM32芯片bug。
具体参见:http://www.bubuko.com/infodetail-2688888.html
注:我用的是stm32F429,没有发现这个bug,但是记录下来作为开拓思路的一种方法。
3、stm32外部中断,EXTI_ClearITPendingBit,先清和后清的区别
前面清的话,如果下一次中断在该次中断退出前到来,那么退出该次中断后,会马上进入下一次中断,后面清的话,在该次中断退出前到来的中断就会被忽略,这里后到来的中断,指的是同样的中断
由于按键抖动一般在ms量级,而中断服务程序一般都是us量级,因此对于按键防抖来说,前面清和后面清影响不大,但是为了保险起见,还是在中断函数的后面清比较好。
4、进入中断之后失能EXTI中断
这种方式最终解决了我的按键防抖问题,大体思路就是:进入中断之后立即失能中断,等处理完响应的操作之后,在使能中断,这样的话当第一次进入中断之后不会再次进入中断,直到再次使能中断之后。
史海拾趣
|
当控制系统在高量电子噪音的影响下,其可靠性会有所降低,但是采用适当的电源和接地方式能将这种影响降至最低。 系统中的各种元器件会不同程度的受到电噪音的影响。以下是系统调试过程中可能出现的一些情况: · 合 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:31 编辑 本系统的设计电路由实时时钟模块、环境温度检测模块、电网检测模块、人机接口模块、报警模块等部分组成。其中实时时钟采用DS12887,可实现年、月、日、时、分、秒等时间信息的采集和闹钟功能;温度检测 ...… 查看全部问答> |
|
主机每200ms向从机发送一次数据,从机接收到后,如果判断数据接收没有错误,就将数据返回到主机使主机的LED1灯亮。但是现在发送和接收都实现不了,我看到SBUF里没有数据。好像一用定时器定时发送数据就有问题,不知道是怎么回事。 1,主机程序: ...… 查看全部问答> |
|
wince UI设计的时候,因为有很多初始化过程在主界面显示之前,所以需要一个等待界面,现在我想用无模式对话框做等待界面,但是遇到了问题(不知道有没有别的办法,要是开线程,好像更麻烦) // 1 等待界面 CPopDialog *spl ...… 查看全部问答> |




