STM32控制器外中断注意事项

STM32的外部输入中断在检测按键时遇到抖动问题,导致按键按下和弹起都触发中断。通过示波器观察到1ms级别的抖动,并在DI5和DGND之间并联0.1uF电容进行滤波。调整中断为上升沿触发,确保只有按键松开时stop_check值变化,同时将两次中断间隔设为5ms,成功防止了误触发,解决了现场体验问题。
摘要由CSDN通过智能技术生成

问题:
STM32的外部输入经过光耦接到GPIO输入端,如图所示:
在这里插入图片描述
其中,I5对应的按键检测用于即按即停功能,不能有误触发;
MCU中,DI5管脚原来设置成下降沿触发;
测试时发现按键按下和弹起时,都会触发中断,进入中断处理程序的回调函数;
1、将延时时间由300ms延长到3000ms不能解决问题;
2、示波器查看有没有上升沿抖动,时间轴设定为每格100ms,看不到抖动现象;
将时间轴放大到每格1ms就可以清晰地看到抖动了;
3、在中断回调函数中,stop_check ^= 1,也就是说每进一次中断,stop_check的值都会在0和1之间切换;
4、原因找到了,想办法解决抖动问题。

解决办法:
1、解决抖动问题前,在时间轴每格1ms的窗口上,看到的抖动如图所示:
在这里插入图片描述
2、在DI5和DGND之间并联了一个0.1uF的电容,
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值