《STM32 HAL库》中断相关函数详尽解析——外部中断服务函数

观前提醒:本文简要回顾了EXTI及NVIC相关知识点,分析了stm32f1系列单片机外部中断回调机制

开始之前,先温习一下有关EXTI和NVIC的知识点

外部中断/事件控制器(EXTI)

对于互联型产品(105、107系列),外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成 ,对于其它

型号,则有19个能产生事件/中断请求的边沿检测器。

每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求

简而言之:EXTI是一个检测器,检测到符合条件的边沿,即向NVIC发送中断请求 (此处仅讨论中断)

外部中断/事件控制器框图:

嵌套向量中断控制器(NVIC)

NVIC英文全称是Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中断相关功能。由于ARM给NVIC预留了非常多的功能,但对于使用M3内核设计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST公司的STM32F103芯片内部中断数量就是NVIC裁剪后的结果。中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开任意库函数工程即可查看到。NVIC和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断。

STM32F103芯片支持60个可屏蔽中断通道,并且每个中断通道都具有自己的中断优先级控制字节。这些中断优先级控制字节由8位组成,但在STM32F103芯片中,只使用其中的高4位,即4位优先级。

在STM32F103芯片中,中断优先级分为抢占式优先级和响应优先级(亚优先级或副优先级)两部分。抢占式优先级用于决定中断事件是否能够打断当前正在执行的主程序或中断程序,而响应优先级用于确定同一抢占式优先级下,中断的相对优先级。

当两个中断的抢占式优先级相同时,高响应优先级的中断会先被响应和处理。也就是说,如果两个中断同时到达,具有更高响应优先级的中断将先被处理。

当两个中断的抢占式优先级不同时,具有较高抢占式优先级的中断可以打断正在执行的较低抢占式优先级中断。这种情况下,中断嵌套发生,高抢占式优先级的中断会打断当前正在执行的较低抢占式优先级中断,并开始执行自己的中断服务程序。

当两个中断的抢占式优先级相同时,如果一个中断正在处理,而另一个中断到达,后到达的中断需要等待前一个中断处理完毕后才能被处理。如果两个中断同时到达,中断控制器会根据它们的响应优先级来决定先处理哪个中断。如果它们的抢占式优先级和响应优先级都相等,则根据它们在中断表中的排位顺序决定先处理哪个。

简而言之:NVIC的功能是管理和控制中断的优先级和中断服务程序的执行。

当然这都是形而上的解释,最通俗易懂的说,NVIC应该是"厕所管理员",它用于控制中断优先缓急以及嵌套中断和打扫"厕所"。

说起来很复杂,但是在实际操作中,复杂操作都被封装好了,我们只需要几行代码就能完成设置。

就比如上篇中配置NVIC的代码:

点击《STM32 HAL库》中断相关函数详尽解析------外部中断服务函数 - 古月居可查看全文

相关推荐
想搞嵌入式的小白13 分钟前
STM32 NVIC中断控制器
stm32·单片机·嵌入式硬件·nvic
A-花开堪折34 分钟前
Android7 Input(十)View 处理Input事件pipeline
android·嵌入式硬件
深圳市尚想信息技术有限公司1 小时前
【深尚想】OPA855QDSGRQ1运算放大器IC德州仪器TI汽车级高速8GHz增益带宽的全面解析
单片机·嵌入式硬件
陕西艾瑞科惯性技术有限公司2 小时前
让飞行姿态 “可感知”:为什么无人机需要三轴陀螺仪?
嵌入式硬件·机器学习·机器人·无人机·pcb工艺
代码总长两年半2 小时前
STM32----IAP远程升级
stm32·单片机·嵌入式硬件
广药门徒3 小时前
STM32手册上标称的18MHz GPIO翻转速度和你实际测量到的速度之间的差异是预期之内且合理的
单片机·嵌入式硬件
广药门徒3 小时前
在使用一些不用驱动大电流的设备就可以用stm32的自己的上下拉但是本身上下拉不就是给iicspi这些他通信给信号的吗中怎么还跟驱动能力扯上了有什么场景嘛
stm32·单片机·fpga开发
jz_ddk3 小时前
[zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
linux·运维·c语言·网络·嵌入式硬件
天天爱吃肉82184 小时前
【十年技术演进深度解构:车载充电机(OBC)将成为新能源汽车的“能源大脑”】
python·嵌入式硬件·算法·汽车·能源
most diligent12 小时前
蓝桥杯_DS18B20温度传感器---新手入门级别超级详细解析
单片机·嵌入式硬件