问题:
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的电容,