概述:
CPU处理中断过程介绍和NVIC介绍
当发生中断时,中断信号会从NVIC根据NVIC-IPR寄存器里设置好的相关信号的抢占优先级、响应优先级、中断向量表里的自然优先级,依次传入CPU,抢占CPU的使用权,最后CPU同样通过定义在系统启动文件(.S)里的中断向量表,找到对应的中断服务函数,并执行里面包含的中断处理程序
KEIL里面的.S文件,下面是.S里定义的中断向量表,DCD是4字节对齐内存的意思
手册里的中断向量表:黑色的是内核中断
NVIC介绍:
介绍下AIRCR,用于给IPRX的4位设置中断优先级分组
NVIC在HAL库的使用:
圈起来的是中断号,中断向量表里的编号
EXIT介绍:
1.EXIT概述
2.中断分类:
EXTI中断=外部中断+来自其他外设的事件信号(事件和外部中断不一样,不能叫中断)
外设中断=与GPIO无关,不经过AFIO、EXTI等,直接由外设产生的中断,比如定时器溢出产生中断
这里GPIO PIN 0-15 通过AFL1与 0-15跟EXIT线对应
3.4特性:
可配置输入信号是用于输出唤醒事件信号,还是中断信号
挂起状态位:当置为1时,即为配置为输出中断信号
4.EXIT原理:
看不懂可看视频:第58讲 入门篇-EXTI工作原理(F1 F4 F7)_哔哩哔哩_bilibili
介绍AFIO/SYSCFG:(用于配置EXIT和IIO口映射关系)
EXTI和IO口的关系:(就是哪些GPIO口对应哪些EXTI总线,由AFIO实现)
教你怎么看:
首先寄存器1,说明还有跟他一样的寄存器
保留的意思是该寄存器31-16位都是用不到的,RW是可读写的意思
这里的意思是,加入配置EXIT2【3:0】,将0000写入,则配置了EXIT2=PA2
实战:(HAL库)
分为EXIT中断和外设中断
总的来说:
中断服务函数(IRQ)----->调用中断公共函数(忘了叫什么)---->调用各种中断回调函数
如:
串口中断服务函数(USART_IRQ)--> 中断公共函数----->串口接收回调函数、串口发送回调函数
定时器中断服务函数(TIM_IRQ)---->中断公共函数----->更新(溢出)中断回调函数、捕获回调函数等