最近在调试按键作为外部中断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中断
这种方式最终解决了我的按键防抖问题,大体思路就是:进入中断之后立即失能中断,等处理完响应的操作之后,在使能中断,这样的话当第一次进入中断之后不会再次进入中断,直到再次使能中断之后。
上一篇:stm32f103应用rt-thread 1.2.5搭建的Keil工程
下一篇:stm32中非阻塞式多按键状态检测函数
推荐阅读
史海拾趣
ECLIPSE公司深知,要想在竞争激烈的电子行业中保持领先地位,必须不断创新和满足用户需求。因此,公司投入大量资源用于Eclipse的研发和更新,不断推出新版本和新功能。同时,ECLIPSE公司也非常重视社区建设,通过举办开发者大会、提供在线支持等方式,积极与全球开发者互动和交流。这些努力不仅增强了Eclipse的用户黏性,也为其带来了更多的创新思路和商业机会。
在市场推广的过程中,Soneet注重品牌形象的建立。公司积极参加各类行业展会和技术交流会议,展示其最新技术和产品。同时,Soneet还通过媒体宣传、社交媒体营销等方式,提高品牌知名度和美誉度。这些努力使得Soneet在消费者心中树立了良好的品牌形象。
随着公司的发展,DAVE Embedded Systems不断投入研发力量,致力于技术创新和产品创新。他们基于最新技术(如多核ARM Cortex、PowerPC和X86)设计了一系列高端嵌入式系统模块,这些产品不仅满足了客户对性能的需求,还提供了更好的可靠性和可扩展性。此外,公司还积极开发基于Android和Windows平台的嵌入式系统模块,以满足不同客户的需求。
随着公司的发展,DAVE Embedded Systems不断投入研发力量,致力于技术创新和产品创新。他们基于最新技术(如多核ARM Cortex、PowerPC和X86)设计了一系列高端嵌入式系统模块,这些产品不仅满足了客户对性能的需求,还提供了更好的可靠性和可扩展性。此外,公司还积极开发基于Android和Windows平台的嵌入式系统模块,以满足不同客户的需求。
随着全球化的发展,EUCHNER公司开始实施国际化战略,加强在全球市场的布局。公司在世界各地设立了多个分销处和办事处,以便更好地满足不同国家和地区的市场需求。同时,公司还积极与国际知名企业建立合作关系,共同推动工业自动化领域的进步。通过国际化战略和全球布局,EUCHNER公司的品牌影响力得到了进一步提升。
ALSC公司成立于XXXX年,初创期面临着激烈的市场竞争和技术壁垒。然而,创始人凭借对半导体技术的深刻理解和市场需求的敏锐洞察,决定专注于开发高性能、低功耗的半导体产品。经过多次尝试和不断改进,公司成功推出了一款具有竞争力的产品,并逐渐在市场上获得了一席之地。
大家好! 最近我在搞USB Device驱动,我对所有USB都必须实现的3个函数:USBInstallDriver,USBUnInstallDriver,USBDeviceAttachy有疑惑,不知他们是需要在哪里实现的!! 按照我的理解就是在选择了USB的3中应用的其中一个后: catalog->Device Drive ...… 查看全部问答∨ |
DSP新手上路,应该注意什么,如何能学的快些,希望给点建议。。。。 我以前学过单片机。。。。但是没焊过电路板。。现在想学习DSP搞电机控制方面,想问问各位DSP前辈高手,学习的过程中应该注意什么,什么东西该看什么东西不用看。。。。如何能学的有效!万分感谢… 查看全部问答∨ |
用51单片机做数据采集,谁有AD7731的C程序,能提供参考下吗?我实在是没辙了,调试了很久了 我邮箱 279201105@qq.com 万分感谢… 查看全部问答∨ |
先说明一下常见的状态机写法: 2段式:一个时序逻辑,一个组合逻辑(状态跳转和决定输出)。 3段式:2个时序逻辑,一个组合逻辑控制状态跳转。最近在看到他人的代码的时候,对有些状态机的写法还不是很明了,上来求教一下大 ...… 查看全部问答∨ |
我在一个应用中,用STM32驱动MOS管,驱动端口配置为OD输出+10K上拉,请问上拉电阻的另一端最高电压为伏? 我之前测试8V时操作正常,现在用12V(LM2576没有定压的没有8V的)就不正常了,不能输出低… 查看全部问答∨ |
|