STM32中断

STM32中断

中断基本概念

中断指主程序运行过程中,某个特定事件或条件发生时,CPU会暂停当前程序执行,去处理中断事件,当中断事件处理完毕后,CPU恢复原来的程序

中断优先级

在STM32中有各种各样的中断,这些中断可能会同时发生,这时候就需要根据预设的优先级来确定哪个中断优先处理

中断嵌套

当处理中断过程中,如果有更高优先级的中断发生,CPU会暂停当前中断,去处理新的更优先级的中断,处理完后再处理当前中断的中断,这种现象就叫中断嵌套

STM32中断

STM32有68个可屏蔽中断通道(F1系列最多的中断数量,实际以手册为准,如:F103C8只有60个),包含EXTI, TIM, ADC, USART, SPI, I2C, RTC等多个外设。这些中断使用NVIC统一管理。每个中断通道有16个可编程的优先级,可以对优先级分组,进一步设置抢占优先级和响应优先级

NVIC基本结构

NVIC(Nested Vectored Interrupt Controller),嵌套向量中断控制器,负责中断的统一管理和优先级分配, 是一个内核外设,帮助CPU处理大量中断请求。NVIC作为中断管理单元,承担了中断优先级的划分和管理任务

NVIC中断优先级分组

NVIC有优先级配置寄存器,寄存器宽度为8位(bit)(理论上可以配置优先级0-255), 但是STM32只使用了其中的高四位,因为大量优先级会增加NVIC的复杂度,从而增加功耗降低速度。使用4位最多可以配置0-16个中断优先级

这4位在进行切分,可切分为高n位的抢占优先级和低4-n位的响应优先级,两个优先级都是数值越小,优先级越高

其中,抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,但无法中断嵌套。如果抢占优先级和响应优先级都一样,则按中断号排队(中断向量表图在本节首)

EXTI外部中断

EXTI外部中断用于监控和响应GPIO端口的电平变化,当指定的GPIO口发生电平变化时,EXTI会立即项NVIC发出中断请求。EXTI的基本功能就是通过监控引脚电平的变化,触发中断并中断CPU的主程序,执行特定的中断处理程序

EXTI四种触发方式:

1、上升沿触发:GPIO电平0->1,产生中断请求

2、下降沿触发:GPIO电平1->0, 产生中断请求

3、双边沿触发:GPIO电平发生上升沿或下降沿时,都会触发中断请求

4、软件触发:可以通过软件手动触发一个中断,而不依赖引脚电平的变化

EXTI支持几乎所有的GPIO口,但是同一个引脚不能同时用于多个中断源例如:PA0,PB0,PC0,虽然是不同的端口,但是引脚编号相同,所以不能同时作为中断引脚,而PA0, PB1,引脚编号不同,可以同时用作中断源。

STM32的EXTI支持16个GPIO引脚, 以及4个特定的外设信号,分别为:

PVD(电源电压检测)输出

RTC(实时时钟)闹钟

USB唤醒信号

以太网唤醒信号

外部中断的触发响应方式:

1、中断响应:CPU暂停当前程序并执行中断程序

2、事件响应:不会触发中断,触发其他外设的操作,不一定需要中断CPU程序

基本结构

EXTI只有16个GPIO通道,但是每组GPIO外设都有16个引脚,所以EXTI的16个通道无法同时满足所有GPIO引脚,为了解决这个问题,STM32引入了AFIO中断引脚选择模块,可以在每组GPIO的16个引脚中选择一个通过AFIO在接入EXTI通道

因此,EXTI的输入信号由16个GPIO通道,加上4个特定外设通道(PVD(电源电压检测)、RTC(实时时钟)、USB唤醒以及以太网唤醒信号),一共20个输入信号。

AFIO作用

AFIO模块的核心作用是为每个GPIO外设引脚选择一个特定的中断通道,相同的引脚(Pin)不能同时触发多个中断。

STM32中AFIO主要完成两个任务:1、复用功能引脚重映射、2、中断引脚选择

中断与事件响应

EXTI分为两种输出:

1、接入NVIC触发中断:中断响应

需要注意的是,其中一部分(如外部中断5-9号和10-15号)可能会触发相同中断,这些中断被STM32整合为共用一个NVIC通道,在使用时,需要根据标志位来区分哪个具体的中断请求被触发。

2、接入其他外设,触发外设操作:事件响应

相关推荐
嵌入式小站2 小时前
STM32 零基础可移植教程 13:输入捕获入门,怎么测一个方波频率
stm32·单片机·嵌入式硬件
agathakuan2 小时前
從零開始在家開發 IoT: Flash & Run 腳本解析(STM32 + WiFi HaLow)
stm32·mcu·iot
Rocktech_ruixun2 小时前
智慧餐饮新机遇:全场景无人化升级,破解餐饮业降本增效难题
人工智能·嵌入式硬件·ai·机器人
agathakuan2 小时前
從零開始在家開發 IoT: OpenOCD 與 GDB 協作指南
stm32·gnu·rtc
Dillon Dong5 小时前
【风电控制】TI TMS320F28379D 双CPU架构解析与任务分布设计
嵌入式硬件·算法·变流器·风电控制
czy878747511 小时前
vscode编译make命令要修改stm32cubemx生成的STM32F103XX_FLASH.ld文件
ide·vscode·stm32
三易串口屏13 小时前
实验20 自动灭火场景实验
嵌入式硬件·串口屏·三易串口屏·uart 通信
蒸蛋一级爱好者13 小时前
TFTP协议
单片机·嵌入式硬件
优信电子14 小时前
STM32/C51驱动 DHTC11 温湿度传感器
stm32·单片机·嵌入式硬件·c51·温湿度传感器·dhtc11·环境测量