什么是STM32全局中断
什么是STM32全局中断
更多
在STM32微控制器(以及所有基于ARM Cortex-M内核的芯片)的语境中,“全局中断”通常指的是控制整个处理器是否响应所有可屏蔽中断的开关状态。
以下是详细解释:
-
核心概念:
- STM32的中断系统由嵌套向量中断控制器 (NVIC) 管理。NVIC负责处理来自外设(如定时器、UART、GPIO等)和处理器本身(如SysTick)的中断请求。
- 可屏蔽中断: 大部分外设产生的中断都属于这类。它们可以被“屏蔽”或“禁止”,意味着即使外设发出了中断请求,CPU也不会暂停当前任务去处理它。
- 全局中断开关: 这是处理器内核(Cortex-M)提供的一个最高级别的中断控制位。它就像一个总闸:
- 开启(使能): 当这个总闸打开时,所有已单独使能(在NVIC中配置为开启)的可屏蔽中断,在满足条件时都能触发CPU去处理。
- 关闭(禁止): 当这个总闸关闭时,任何可屏蔽中断请求都会被CPU忽略,无论该中断在NVIC中是否被单独使能。CPU会继续执行当前的主程序代码。
-
相关寄存器:
- 这个全局中断开关的状态由Cortex-M内核的特殊寄存器控制,主要是:
- PRIMASK 寄存器: 这是最常用的。将PRIMASK置1(通常称为“设置PRIMASK”或“提升优先级到最高”)会禁止所有可屏蔽中断。将其清零则允许中断。
- BASEPRI 寄存器: 可以设置一个优先级阈值。所有优先级低于或等于这个阈值的可屏蔽中断都会被屏蔽。优先级高于此阈值的中断仍能触发。将其设置为0则允许所有中断(效果等同于PRIMASK=0)。
- 这个全局中断开关的状态由Cortex-M内核的特殊寄存器控制,主要是:
-
在代码中的操作:
- 开发者通常不会直接操作这些寄存器,而是使用编译器或CMSIS库提供的内联函数或宏:
- 禁止全局中断:
__disable_irq();(CMSIS 函数)__set_PRIMASK(1);(CMSIS 函数)asm("cpsid i");(内联汇编)
- 使能全局中断:
__enable_irq();(CMSIS 函数)__set_PRIMASK(0);(CMSIS 函数)asm("cpsie i");(内联汇编)
- 禁止全局中断:
- 开发者通常不会直接操作这些寄存器,而是使用编译器或CMSIS库提供的内联函数或宏:
-
与NVIC单独中断使能的区别:
- 全局中断开关: 是内核级的“总开关”,控制CPU是否响应任何可屏蔽中断。它影响所有中断源。
- NVIC中断使能/除能: 是在中断控制器(NVIC)级别,针对每个中断源进行单独配置。你可以通过
NVIC_EnableIRQ()使能某个特定外设的中断,通过NVIC_DisableIRQ()禁用它。即使全局中断是开启的,如果某个中断在NVIC中被单独禁用了,它也不会触发。 反之,如果全局中断关闭了,即使NVIC中某个中断是使能的,它也无法触发。
-
为什么需要全局中断控制?
- 保护临界区: 这是最主要的原因。当一段代码(称为“临界区”)需要原子性执行(即执行过程不能被打断)时,会先关闭全局中断,执行完这段关键代码后再打开。常见场景:
- 操作共享资源(全局变量、数据结构)时,防止中断处理程序中途修改导致数据不一致。
- 初始化关键硬件外设。
- 执行需要精确时序的操作。
- 快速关闭所有中断: 在需要立即禁止所有中断响应的紧急情况下(虽然较少见)。
- 保护临界区: 这是最主要的原因。当一段代码(称为“临界区”)需要原子性执行(即执行过程不能被打断)时,会先关闭全局中断,执行完这段关键代码后再打开。常见场景:
-
重要提示:
- 谨慎使用: 关闭全局中断会严重影响系统的实时性(所有中断都被延迟处理),应尽量缩短关闭时间,只包围最必要的临界代码。
- 不可屏蔽中断: 少数中断(如NMI - 不可屏蔽中断、HardFault等)不受全局中断开关的影响,它们总是能被处理。
- 术语习惯: “全局中断”是开发者常用的、非正式的叫法,更准确的说法是“禁止/使能所有可屏蔽中断”。
总结:
STM32的“全局中断”指的是通过内核寄存器(如PRIMASK)控制的、决定CPU是否响应所有可屏蔽中断的开关状态。关闭它(禁止全局中断)会阻止CPU处理任何可屏蔽中断请求,常用于保护临界代码段。它与在NVIC中单独配置每个中断源的使能状态是不同层次的控制。操作全局中断通常使用__disable_irq()和__enable_irq()等函数。
stm32中断怎么处理的
STM32是一款非常强大的微控制器系列,具有丰富的外设和功能。中断是STM32中非常重要的部分,能够帮助我们提高系统的响应速度和效率。本文将详细
2024-01-02 17:35:10
stm8中断中不能随意关闭或使能全局中断
调试STM8遇到的问题在调试STM8L051的单片机时,使用的多个外部中断,当进入某外部中断的中断服务函数后,原来是想进入这个
资料下载
吴藩
2021-11-23 17:51:44
STM32按键扫描/按键中断/外部中断资料下载
电子发烧友网为你提供STM32按键扫描/按键中断/外部中断资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参
资料下载
佚名
2021-04-13 08:45:07
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览