【STM32】外部中断
- 前言
- 一、中断系统
- 1.1 什么是中断
- 1.2 中断优先级
- 1.3 中断嵌套
- 1.4 中断执行流程
- 二、NVIC
- 2.1NVIC基本结构
- 2.2 NVIC优先级分组
- 三、EXTI
- 3.1 EXTI 外部中断(Extern Interrupt)
- 3.2 EXTI基本结构
- 3.3 AFIO复用IO口
- 3.4 EXTI内部框图
前言
【STM32】外部中断(上)这部分主要讲解了,对中断系统、NVIC、EXTI的基础知识的介绍,剩余实验部分放在【STM32】外部中断(下)中讲解。
一、中断系统
1.1 什么是中断
- 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。
- 在主程序运行的过程中,出现了特定的中断触发的条件(中断源),使CPU暂停了正在运行的程序,转而去处理中断程序,处理完后返回原来被暂停的位置继续运行。STM32的中断:68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设。
- 例如:
1)对于外部中断,引脚发生电平跳变
2)对定时器来说,定时时间到了
3)对串口通信来说,接收到了数据
1.2 中断优先级
当有多个中断源同时申请中断时,CPU 会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。
1.3 中断嵌套
当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU 再次暂停当前的中断程序,转而去处理新的中断程序,处理完成后依次返回。
1.4 中断执行流程
程序由硬件电路自动跳转到中断程序中
二、NVIC
使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。(NVIC就是STM32用来管理中断,分配优先级的)
2.1NVIC基本结构
NVIC(嵌套中断向量控制器)是一个内核外设,,CPU的小助手
一个外设可能有多个中断通道
2.2 NVIC优先级分组
NVIC的中断优先级由优先级寄存器的4位(0 - 15)决定,这4位可以进行切分,分为高n位的抢占优先级和低(4 - n)位的响应优先级。(优先级数值越小,越先响应)
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。(任何时候都跟优先级高的先响应)
区分0的含义:0位代表无这一优先级,取值为0代表最高。
三、EXTI
3.1 EXTI 外部中断(Extern Interrupt)
- EXTI 可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时,EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序。
- 简单来说:引脚电平变化申请中断。
- 支持触发方式:上升沿,下降沿,双边沿,软件触发。
- 支持所有 GPIO 口,但相同的 Pin 不能同时触发中断(PA1 和 PB1 不能同时用,后面AFIO有解释)。
- 通道数:16 个 GPIO_Pin,PVD 输出,RTC 闹钟,USB 唤醒,以太网唤醒。
- 触发方式:
中断响应:申请中断,让 CPU 执行中断函数。
事件响应:当外部中断检测到引脚变化时,中断信号就不会通向 CPU 了,而是通到其它外设,用来触发其它外设的操作(ADC,DMA),属于外设之间联合工作。
3.2 EXTI基本结构
3.3 AFIO复用IO口
3.4 EXTI内部框图
外部中断触发完整流程:
-
1. 输入与边沿检测
输入线接收外部信号(如GPIO引脚电平变化),边沿检测电路依据上升沿触发选择寄存器和下降沿触发选择寄存器的配置(位为1表示使能对应沿检测),判断输入信号是否产生有效边沿(上升沿、下降沿或双边沿)。若检测到有效边沿,输出高电平;否则输出低电平。 -
2. 软件触发与或操作
软件中断/事件寄存器可通过软件写入(对应位设为1),主动生成中断/事件请求。边沿检测电路的输出与软件中断/事件寄存器的输出进入或门,只要其中一个为高电平,或门输出就为高电平,产生中断/事件请求信号。 -
3. 挂起与屏蔽(中断路径)
或门输出的高电平使请求挂起寄存器对应位置1,标记有未处理的中断请求。同时,中断屏蔽寄存器的输出(位为1表示允许中断,为0表示屏蔽)与请求挂起寄存器的输出进入与门。只有当两者均为高电平时,与门输出高电平,中断请求才会被允许传递至NVIC。 -
4. 事件触发路径(并行逻辑)
或门输出的高电平还会与事件屏蔽寄存器的输出(位为1表示允许事件,为0表示屏蔽事件)进入另一组与门。若与门输出高电平,信号会通过脉冲发生器,触发其他外设(如ADC启动转换、DMA开始传输等)执行操作,此过程不涉及CPU中断响应,属于外设间的事件联动。 -
5. 向NVIC传递中断
经中断路径与门允许的中断请求,通过“至NVIC中断控制器”的通路发送给嵌套向量中断控制器(NVIC)。NVIC根据各中断的优先级配置(抢占优先级和响应优先级),裁决是否响应以及响应的顺序,若响应则暂停当前CPU执行的程序,转去执行对应的中断服务程序。
关于【STM32】外部中断(上)的讲解就到这里,希望对你有所帮助,感谢观看ovo!