当前位置: 首页 > news >正文

NVIC中的不可屏蔽中断NMI(Non-Maskable Interrupt)是什么?

NVIC中的不可屏蔽中断NMI(Non-Maskable Interrupt)是什么?

在ARM Cortex-M系列处理器(如STM32、GD32等常用的微控制器)的嵌套向量中断控制器(NVIC)中,NMI 的全称是 不可屏蔽中断

简单来说,NMI是一种具有最高优先级、无法通过软件(通常指在CPU中设置PRIMASK寄存器)被屏蔽或关闭的特殊类型中断。当NMI事件发生时,处理器必须立即响应它。


NMI的核心特点:

  1. 不可屏蔽

    • 这是NMI最根本的特性。普通的可屏蔽中断可以通过设置CPU的全局中断使能位(如Cortex-M中的PRIMASK)来禁用,以防止中断打断关键代码的执行。
    • 但NMI不受PRIMASK位的影响。即使你关闭了所有普通中断,NMI依然可以触发并被处理器响应。这确保了系统在最关键的错误或事件发生时,总能得到处理。
  2. 固定高优先级

    • 在NVIC的优先级中,NMI拥有仅次于硬件复位(Reset) 的优先级,并且高于任何可配置的异常和中断。
    • 它的优先级是硬件固定的,数值上通常为**-2**(在Cortex-M中,数值越小,优先级越高),而复位(Reset)的优先级是-3。用户无法通过软件修改NMI的优先级。
  3. 独立的中断向量

    • NMI在中断向量表中有自己固定的入口地址(通常是偏移量为8的位置)。当NMI发生时,CPU会自动跳转到这个固定的地址去执行对应的NMI服务函数

NMI的典型应用场景:

由于NMI的不可屏蔽和高优先级特性,它通常被预留给那些最严重、最需要立即处理的系统级事件,以防止系统完全锁死或发生灾难性故障。常见来源包括:

  1. 时钟安全系统(CSS - Clock Security System)

    • 当外部高速时钟(HSE)失效时,许多微控制器会触发NMI,并自动切换到内部RC时钟(HSI),以保证系统不会因为“心跳”停止而宕机。
  2. 存储器错误

    • 某些芯片可能将Flash存储器操作错误ECC校验错误连接到NMI,因为这些错误可能直接导致程序无法继续正确执行。
  3. 窗口看门狗(WWDG)

    • 窗口看门狗超时通常意味着程序运行流程出现了严重偏差,需要最紧急的处理,因此它常常被连接到NMI。
  4. 外部硬件故障引脚(NMI Pin)

    • 许多微控制器会有一个专用的外部NMI引脚。你可以将一个关键的硬件故障信号(如电源监控芯片的掉电警告)连接到此引脚。当电压低到危险程度时,该引脚会立即触发NMI,让CPU在系统断电前有最后的时间来保存关键数据或执行安全关机操作。
  5. 其他芯片厂商定义的严重错误

    • 芯片制造商可以根据自己产品的特性,将其他他们认为至关重要的故障源映射到NMI。

与普通中断的区别总结:

特性NMI (不可屏蔽中断)普通中断 (IRQ)
可屏蔽性不可屏蔽,总能触发可屏蔽,可通过PRIMASK位关闭
优先级固定最高(仅次于复位),用户不可配置优先级可软件配置
用途处理极其严重的硬件错误或系统事件处理常规的外设事件和软件中断
响应必要性必须响应,否则系统可能失效可根据系统状态延迟或忽略响应

总结

NMI是NVIC中一个用于处理最高级别紧急事件的安全机制。 它就像是一个医院的“急救代码蓝色”,任何情况下都不能被忽视,必须得到立即响应。它的存在极大地增强了嵌入式系统的鲁棒性可靠性,确保在发生严重故障时,系统仍有机会执行最后的挽救措施,而不是直接“死机”。

http://www.dtcms.com/a/394361.html

相关文章:

  • TypeORM 浅析
  • 2.4 死锁 (答案见原书 P165)
  • 算法与数据结构:常见笔试题总结
  • trae使用playwright MCP方法流程
  • anaconda安装tensorflow遇到的一个错误
  • 不同浏览器对 http.server 提供MP4 文件支持差异分析
  • Python 实战:内网渗透中的信息收集自动化脚本(10)
  • leetcode 206 反转链表
  • AI智能的网站SEO优化服务商
  • 生产者客户端
  • Puppeteer 在爬取电商 JavaScript 页面的使用
  • 2015/12 JLPT听力原文 问题四
  • 【设计模式】备忘录模式
  • STM32_07_按键
  • 基于迁移学习和SqueezeNet的滚动轴承故障诊断(MATLAB)
  • 实战项目(十二:《AI画质增强与LED驱动控制:一场关于‘创造’与‘还原’的对话》):从LED冬奥会、奥运会及春晚等大屏,到手机小屏,快来挖一挖里面都有什么
  • 开发避坑指南(52):IDEA 2025.1.3 顶部显示类完整路径的设置方法
  • 安装Qt新之后出现两本帮助手册
  • Rust_2025:阶段1:day7.2unsafe , 链接相关
  • 【论文速递】2025年第15周(Apr-06-12)(Robotics/Embodied AI/LLM)
  • 设计模式简单说明:责任链与规则树
  • 自动备份脚本 mysql_hourly_backup.sh
  • SuperGLUE:自然语言理解的挑战与进步
  • 线程安全的单例模式、自旋锁,以及读者写者问题
  • U盘长期插在电脑上的影响
  • Windows 系统部署 PaddleOCR —— 基于 EPGF 架构
  • 数据一致性指的是什么?如何实现数据一致性?
  • 初识消息队列的世界
  • Python快速入门专业版(三十八):Python字典:键值对结构的增删改查与进阶用法
  • SpringCloudOAuth2+JWT:微服务统⼀认证方案