三.外部中断(cubemx的hal库版本) 📅 2026/7/23 23:02:53 外部中断的意义就是方便外部信号进行控制例如现在我们要实现按键当按键按下时候引脚处于低电平此时便可以通过中断服务函数直接进入放止在主循环中一直判断是否按下减少对于CPU的占用。相比较于上一章节的配置在外部中断中cubemx需要将PE5也就是按键的模式改为是GPIO_EXIT模式如图所示因为按键是按下为低电平所以我们采用下降沿触发外部中断。外部中断和外部事件的区别就在于是外部中断是软件解决触发需要做的事件会占用cpu去处理优点在于是灵活度高想处理什么就处理什么而缺点就是会占用cpu而外部事件是硬件处理的不占用cpu资源但是相应的这样能够处理的事件相应就会减少。接下来我们需要进行中断使能以及配置中断优先级现在只存在有一个中断所以优先级保持默认也可以也就是0 0其中第一个Preemption Priority被称为是抢占优先级抢占优先级是比如同时两个任务在运行当两者一个抢占优先级为0一个为1时候此时如果恰好抢占优先级为1的正在运行中断此时又达到了抢占优先级为0的中断的触发条件此时会先进行优先级为0的执行完之后再返回执行优先级为1的第二个Sub Priority被称为子优先级也叫做响应优先级当存在两个抢占优先级都为0的中断时候对于单片机会先执行高优先级的事件但是注意不具备抢占能力也就是就算是低优先级事件运行时候高优先级达到了执行情况也会执行完低优先级再去执行高优先级不会进行抢占。注意这都是数字小的优先级高。这样我们就使用cubemx配置好了接下来我们来看代码方面void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)这个就是我们的中断服务函数了但是它不需要咱们自己传入参数是自动填入的我们需要做的是在内部判断当前哪个引脚触发了中断。例如这样就要简单很多很多并且也更加方便了