一,EXTI模块
EXTI模块中的MCU上含有多个外设和GPIO口,我们可以通过电路配置来将外部中断映射到GPIO口上,通过检测GPIO口上的电平变化来产生中断请求。
二,NVIC控制器
NVIC主要维护各种中断的优先级,其内置了一个中断向量表。我们可以设置我们想要的抢占优先级和响应优先级。
三,外部中断工作流程
某个外部中断源产生一个中断信号,stm32检测到GPIO口上的电平变化,EXTI产生一个中断请求并且通过对应的中断线将请求发送到NVIC控制器,在经过优先级处理后产生一个中断标志位,CPU检测到这个中断标志位并且给予响应(保护现场,获取中断向量地址)。CPU执行中断服务程序,这期间若有更高级别的抢占优先级中断,则会进行中断的嵌套(依据抢占有限即和中断屏蔽寄存器),之后就会进行中断返回。
四,外部中断的配置流程
1.初始化gpio的输入模式,上拉输入或下拉输入
2.将外部中断线映射到gpio口上
3.配置NVIC,具体包括优先级配置和中断出发方式
4.编写中断服务程序
五,外部中断实验总结
当你触发了某个中断源但没有体现你想要的效果,问题可能出现在以下几个地方
1.进入了中断服务程序,但中断服务程序里的编写有问题,这时可以看看在中断服务程序里进行调试。
2.压根没有进入中断服务程序:可能是你中断的触发方式与所配置的不匹配,也可能是中断线的映射错误。
3.按下按键时,假设一端接低,默认上拉,则会先出现下降沿,再出现上升沿