
一、中断逻辑图还是和GPIO一样先通过输入驱动器然后到外部中断/事件控制器左下角的事件分支先不管从右到左包括1.边沿检测电路在这里选择上升沿/下降沿触发也就是我们在STM32 Cube IDE的GPIO中设置的模式2.一个或门任一输入都为1置1软件中断触发器输出软件模拟中断信号或边缘检测电路中断信号进入任一触发都会置一进入请求挂起寄存器3.一个与门两个输入都为1置1在中断屏蔽寄存器打开的情况下我们设置中断号该中断屏蔽寄存器就会打开请求挂起寄存器一来中断信号与门就会置一进入最终的中断控制器NVIC4.NVIC中断控制器掌管着中断向量表表中储存着中断函数的地址指向中断号对应的中断函数在执行完中断函数后需要清除PR 中断挂起标志否则会一直触发中断但是这部分我们无需担心在STM32 Cube IDE我们勾选了那些选项之后中断函数代码自动生成的HAL_GPIO_EXTI_IRQHandler(KEY1_Pin)会帮我们做这件事二、中断优先级我们在STM32 Cube IDE左边的NVIC选项中可以配置中断优先级中断优先级分为两种抢占优先级和响应优先级可以理解为一级优先级和二级优先级中断优先级存储在四位数据中在NVIC中还可以设置将这四位中的几位分配给两种优先级默认都分配给抢占优先级也就是0~151.触发多个中断时先判断抢占优先级再判断响应优先级两者都同时时按照中断向量顺序执行中断2. 在中断运行时触发其它中断只判断抢占优先级若新中断抢占优先级高则新中断打断当前中断