1.什么是中断:
CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务,这一过程便是中断。
2.NVIC:
- NVIC(Nested Vectored Interrupt Controller) 内嵌向量中断控制器
- 当中断发生时,NVIC 将比较新中断与当前中断的优先级
3.NVIC优先级:
- 抢占优先级
- 抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。
- 对抢占优先级的级别划分
- 响应优先级
- 响应属性由NVIC_IRQChannelSubPriority 参数配置。
- 相同抢占优先级的优先级别的划分。
-
中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级
A和B抢占优先级相同,则A、B的响应优先级决定谁先响应。
4.AFIO:
- AFIO(Asynchronous File I/O),即“备选功能输入/输出”。
- 用来控制外设功能和管脚映射,它可以为每个GPIO管脚指定一个替代功能,比如USART、SPI、I2C、ADC等外设功能。
- 通过AFIO模块,可以将多个外设映射到同一个GPIO管脚上,这样可以节省管脚资源。
5. EXTI 外部中断:
- EXTI(External interrupt/event controller)外部中断/事件控制器
- ARM Cortex-M系列处理器中的外部中断模块,它允许外部设备向处理器发送中断请求。
- 支持的触发方式:上升沿/下降沿/双边沿/软件触发
- 当一个外部中断请求发生时,EXTI外设会将中断请求发送给NVIC,NVIC根据中断请求的优先级和设置的中断优先级进行处理。处理完成后,NVIC会向EXTI外设发送一个中断清除信号,清除中断请求并允许下一次中断请求。
- 触发响应方式:中断响应/事件响应
- 事件模式下,当一个中断请求发生时,处理器会执行对应的中断处理程序,但不会向NVIC发送中断清除信号。
- 中断模式下,当一个中断请求发生时,处理器会执行对应的中断处理程序,并向NVIC发送中断清除信号。
6.EXTI 功能框图:
注释:
- 蓝色1:代表20个通道
- 绿色2:或门 A || B,多个输入,一个输出。执行或的逻辑。有 1 就为 1 全部为0则为0
- 黄色3:与门 A&&B,多个输入,一个输出。执行与的逻辑。输入都为 1 才输出 1
分析:
- 输入线
- 边沿检测电路 (由上升沿触发选择寄存和下降沿触发选择寄存器的设置来控制信号触发)。
- 或门: 信号输入来自边沿检测电路,另外一个输入来自软件中断事件寄存器
- 触发中断:请求挂起寄存器(判断事件是否发生,为 1 则事件发生,为 0 则挂起状态;)——与门 (相当于开关,中断屏蔽寄存器置1则输入1,置0则输入0)——NVIC中断控制器
- 触发事件:与门(相当于开关,事件屏蔽寄存器置1则输入1,置0则输入0)——脉冲发生器——其他外设
配置步骤:
-
第一步:配置RCC使能必要外设——GPIOB,AFIO
-
第二步:配置GPIO——结构体的定义,指定引脚,速度配置,工作模式配置,初始化GPIO
-
第三步:配置AFIO——选择使用哪一路的GPIO与后面的EXTI相连
-
第四步:配置EXTI——选择触发响应方式(中断响应和事件响应),选择边沿触发方式(上升沿,下降沿,双沿)
-
第五步:配置NVIC——为中断选择的优先级