外部中断一会儿触发一会儿不触发是咋回事?
用的下降沿触发,感觉有时候按键按了也没反应,是不是配置顺序有讲究?会不会进中断了但是中断函数写挂了? 中断标志你清了吗? 按键抖动搞不搞消抖啊? 用逻辑分析仪看下信号有没有问题? 有时候是优先级没设置好导致丢中断。 有没有开全局中断? 你试试加个上拉或下拉看看? 我以前用这颗L0也是断断续续,怀疑是硬件引脚接触不良。 中断触发方式你改成双边试试? 是不是跑得太快,中断一瞬间就过了? 可能是外部信号线接触不良(如松动、氧化)。信号线过长或未屏蔽,易受电磁干扰 外部电路未正确上拉/下拉,导致信号电平不稳定 触发条件(上升沿、下降沿、双边沿)与实际信号不匹配。中断优先级设置过低,被其他高优先级中断抢占。根据实际信号调整触发条件(如使用EXTI_Trigger_Rising_Falling配置双边沿触发)。提高中断优先级 中断服务函数中未清除中断标志位,导致重复触发或丢失后续中断。在中断服务函数中手动清除中断标志位 引脚未正确配置为输入模式或未启用上拉/下拉。确保引脚配置为输入模式 中断服务函数中存在耗时操作(如延时、复杂计算),导致中断响应延迟或丢失。优化中断服务函数,减少耗时操作。将耗时操作移至主循环中处理,仅在中断中设置标志位 中断服务函数与主程序同时访问共享资源(如全局变量),导致数据不一致。使用volatile关键字修饰共享变量 使用屏蔽线或缩短信号线长度,减少干扰。在外部电路中添加上拉/下拉电阻(如10kΩ),确保信号电平稳定 外部信号存在高频噪声或毛刺,导致中断误触发。可以在信号线上添加滤波电容(如100nF)或RC滤波电路。使用硬件去抖电路(如施密特触发器)