《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库》中断相关函数详尽解析------外部中断服务函数 - 古月居可查看全文

相关推荐
山木嵌入式16 小时前
【STM32实战】轻量级任务调度器实现
stm32·单片机·rtos·任务调度器·裸机开发
guygg8817 小时前
基于霍尔传感器的BLDC控制源码
单片机·嵌入式硬件
ytttr87317 小时前
DSP 28335 CAN总线通信程序
开发语言·stm32·单片机
一枝小雨19 小时前
RISC-V架构sp寄存器 & RISC-V架构下FreeRTOS任务上下文保存与恢复
单片机·架构·嵌入式·risc-v·rtos·内核原理
BW.SU20 小时前
PackagingTool 嵌入式资源打包合并工具
单片机·二进制·嵌入式开发·资源合并软件·图片打包
长安第一美人21 小时前
工业级实时监控系统开发:PHP+ZMQ+JS 前后端分离架构全解析
前端·嵌入式硬件·架构·交互·rk3588·zmq后端
田甲21 小时前
STM32开发环境迁移实践:从 CubeMX 生成 CMake 工程到 VS Code 编译与调试
stm32·单片机·嵌入式硬件
hoiii18721 小时前
在 STM32F1上读取 BMX055 三轴加速度
stm32·单片机·嵌入式硬件
嵌入式小站21 小时前
STM32 零基础可移植教程 04:按键输入,为什么按下去读到的是 0 或 1
chrome·stm32·嵌入式硬件
三佛科技-187366133971 天前
BP8522D贴片SOP7,5V150mA高集成度无VCC电容降压型恒压芯片解析
单片机·嵌入式硬件