前言
本文为笔者学习中断知识的总结与复盘,基于keysking的视频,若文章有误,欢迎大家指正
中断理论
中断概述
是什么
顾名思义,中断就是在执行当下任务时,打断正在进行的任务,先执行更紧急的任务,完成后再恢复原来任务的进程
外部中断EXTI本质
GPIO_EXTIx外部中断模式实际上就是GPIO_Input的一个拓展。EXTI = Input + 检测引脚外部电平变化 + 中断函数
中断类型
我们这里只讨论外部中断(EXTI),也即检测GPIO口电平变化的中断
内部中断先不做讨论,因为内部中断的原理与外部中断类似,而且在相应外设的学习中会顺带着学习其对应中断
中断结构与原理
信号输入到I/O口 --> GPIO内部输入电路 --> 外部中断/事件控制器 --> NVIC嵌套向量中断控制器 --> 控制中断向量表 --> 中断服务函数
中断应用
CubeMX配置
GPIO_EXTI
补充说明
GPIO mode
根据需求配置
外部中断模式:立即响应外部信号
外部事件模式:稍后相应外部信号
PS:
下降沿触发就是引脚外部电平 高 --> 低 触发中断
上升沿触发和上升/下降沿均触发同理
GPIO Pull-up/Pull-down
根据内部电路需求配置,比如说外部KEY按键模块缺少上拉电阻,那么就可以配置其为内部上拉,从而满足电路功能需求
NVIC
PS:
当在中断服务函数中使用Delay延时函数时,System service的优先级应该高于配置中断优先级,以保证在中断服务函数中不会卡死
中断服务函数
位置:User/Core --> stm32f1xx_it.c --> 中断服务函数
中断服务函数与中断回调函数
中断服务函数:NVIC控制中断向量表直接进入中断服务函数(如EXTI0 IROHandler),为硬中断,要求立即响应
中断回调函数:在中断服务函数中调用的模块化的逻辑函数,为软中断,可以稍后相应