入门嵌入式(二)——中断
什么是中断
程序在正常执行的过程中,停下来处理其他事务,处理结束后继续原来的逻辑,这就是中断。
NVIC 嵌套向量中断控制器
中断向量表
名称 -> 处理函数 优先级信息
EXTI0~ EXTI4
EXTI9_5
EXTI15_10
中断结束需要清除请求挂起寄存器,否则会一直触发处理函数。但是CubeMX会自动生成该部分逻辑代码。
优先级
- 数字越小优先级越高
- 中断分为抢占优先级和响应优先级
- 两中断同时发生,先比较抢占优先级
- 若抢占优先级相同,再比较响应优先级
- 若响应优先级相同,在中断向量表靠前的触发
- 四位bit 表示优先级
响应外部中断的内部流程
输入驱动器->外部中断线->边沿检测电路->请求挂起寄存器->NVIC中断控制器->中断处理函数->中断事务逻辑->清除请求挂起寄存器
其他中断
也会涉及:请求挂起寄存器和中断屏蔽寄存器,NVIC,中断向量,中断处理函数
其他
HAL_DELAY()函数需要系统滴答中断