STM32 通过按键方式触发中断的处理流程
需求:通过按键方式触发中断
中断处理流程
整体流程图片
首先中断处理源有三个方向
方向:1:内核其他控件(灰色的图2)
有可以配置的,配置优先级
也有固定的,优先级最高,数越小优先级越高
2:片上外设:位于CPU外部,STM32芯片内部(白色的图3)
3:片上外设,EXTI专门管理外部中断
通过需求是按键,所以需要捕获外面传过来的上升沿或者下降沿,外面传过来的上升沿或者下降沿所能触发的中断我们称为外部中断(STM32芯片的外部)
第一步外部引脚通过AFIO(复用IO)
AFIO整个STM32 的开关网络(内部就是一大堆开关),STM32 的引脚有很多可以做通用模块也可以做复用模块通用模块引脚连接GPIO复用模块引脚连接AFIO,而复用模块的选择就是AFIO来控制。总的来说就是如果引脚要用复用功能可以通过AFIO修改控制权进行连接。
在AFIO_EXTICR1寄存器
它用过复用器,使不同组的同一编号的IO引脚,它们只能同时有一个时外部中断。7选1。
第二步AFIO会将外部中断的引脚接入EXTI中
EXTI内部:首先:经过边沿检测电路,上升/下降沿触发选择寄存器,也可以同时都配1。最后会产生脉冲
中断机制:中断CPU执行main函数
事件机制:完全基于硬件,不给CPU而是给其他片上外设。
当EXTI信号,到达EXTI硬件,RXTI会对其再进行处理成7根线然后才到NVIC
在stm32中中断服务函数,必须要写exti…,这是约定好的,只有EXTI0~4有独立的中断服务函数。在
EXTI5~9是共享函数
EXTI10-15是共享函数
void exti0_func(){
}
第三步最后连接到NVIC上
在NVIC中嵌套或者排队
NVIC会给每个中断4个bit来表示优先级一共16种
NVIC里面有一个嵌套优先级和排队优先级的划分线,可以设置线让左边两位为嵌套优先级,右边两位为排队优先级,划分的话,先比嵌套然后比排队。
作者:山君技研轩