设置引脚中断触发模式为,上升沿下降沿都会触发的模式,PIN_IRQ_MODE_RISING_FALLING。
端口初始化如下:
并且在中断内会关闭中断,并有一个30ms的延时去抖动。
发现上升沿中断只要触发一次,就会一直进入中断。下降沿触发的中断表现正常。不触发上升沿中断的时候,就不会有误触发的情况,触发了一次上升沿中断以后就会,一直触发中断。。。。 中断改成只上升沿触发,或只下降沿触发。就没有这个现象。
发现问题的所在了,在上升沿触发中断后,我会关闭端口中断,在关闭端口外部中断的函数pin_irq_enable内,有个恢复引脚默认状态的地方。
在清除当前端口的外部中断的地方会将,PR中断挂起寄存器置位,使得中断会反复进入。
但很奇怪为什么下降沿触发中断不会有这个现象。。。
现在每进一次中断再清一次标志位__HAL_GPIO_EXTI_CLEAR_IT()暂时解决这个问题。
感觉是与硬件强相关的,或可以先用裸机代码测试下。再仔细对比两边差异。
可能和我之前这个有些像,因为不是量产项目,我后面也没有深入研究。
不过看到你这句,你确定?
并且在中断内会关闭中断,并有一个30ms的延时去抖动。
👍学习了