外部中断触发了却没进中断函数?
电平触发设置了,上升沿下降沿都试过,是不是NVIC没打开还是别的问题?有时候复位后初始化顺序也会影响。 EXTI的中断线开了吗? GPIO模式是不是没配置成输入? 有没有可能是优先级冲突? 中断标志要手动清除哦。 触发方式选对了吗? 感觉像是引脚没真正跳变。 debug模式下容易踩坑。 是不是用到了JTAG占用的引脚? EXTI和NVIC都要打开才行。 .使用HAL_NVIC_EnableIRQ()或直接操作寄存器启用对应的中断通道 .使用HAL_NVIC_EnableIRQ()或直接操作寄存器启用对应的中断通道 优先级设置不当,确保抢占优先级和子优先级设置合理,避免与其他中断冲突。配置优先级分组,再为中断设置合适的抢占优先级和子优先级。 .引脚或时钟设置问题,GPIO时钟未开启:确保在初始化外部中断引脚前,已通过开启对应GPIO端口的时钟。 触发方式设置错误:确保EXTI_InitTypeDef中的触发方式与实际需求一致,如上升沿触发EXTI_Trigger_Rising、下降沿触发EXTI_Trigger_Falling或双边沿触发EXTI_Trigger_Rising_Falling。 .EXTI配置问题,中断线路与引脚不匹配:使用GPIO_EXTILineConfig()函数将引脚映射到正确的EXTI线路 外部中断引脚应配置为输入模式,例如GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;(上拉输入)或GPIO_Mode_IPD;(下拉输入) 引脚悬空或噪声干扰,外部中断引脚应避免悬空,可通过上拉或下拉电阻固定电平,减少噪声干扰。 信号质量差,确保输入信号的边沿陡峭,无抖动或毛刺,必要时可增加硬件滤波电路。
页:
[1]