当前位置:首页 > 嵌入式 > 嵌入式分享

中断的运行并非 “瞬间完成”,而是遵循一套严谨的硬件与软件协同流程,从 “事件触发” 到 “任务恢复” 可分为五个核心阶段:中断请求、中断响应、现场保护、执行 ISR、现场恢复与返回。每个阶段都有明确的硬件逻辑与软件规则,确保中断处理的正确性与高效性。

(一)中断请求:事件的 “信号传递”

中断流程的起点是 “中断请求(IRQ, Interrupt Request)”—— 当外设或内部模块发生特定事件时(如按键按下导致 GPIO 引脚电平变化、定时器计数达到设定值、串口接收缓冲区有数据),会向 MCU 的 “中断控制器” 发送一个硬件信号(通常是电平信号或脉冲信号),表明 “需要紧急处理”。

不同嵌入式芯片的中断请求机制存在差异,但核心逻辑一致:首先,外设需具备 “中断使能” 开关 —— 只有当外设自身的中断使能位被置 1 时,事件发生才会触发 IRQ(例如,要让串口接收数据触发中断,需先开启串口的 “接收中断使能位”);其次,中断请求需经过 “同步电路”—— 由于外设时钟与 MCU 核心时钟可能不同步(如外设用 32kHz 时钟,核心用 100MHz 时钟),IRQ 信号需经过 1-2 个核心时钟周期的同步,避免 metastability(亚稳态)导致的信号误判;最后,中断请求会被暂存在中断控制器的 “挂起寄存器(Pending Register)” 中,等待 MCU 响应 —— 即使 MCU 暂时无法处理(如正在执行更高优先级任务),IRQ 信号也会被挂起保存,不会丢失。

(二)中断响应:MCU 的 “优先级判断”

MCU 接收到中断请求后,并非立即响应,而是先进行 “中断响应条件判断”,核心是 “是否允许中断” 与 “中断优先级是否足够高”。

首先是 “全局中断使能” 判断:MCU 有一个 “全局中断使能位”(如 ARM Cortex-M 系列的 PRIMASK 寄存器),只有当该位为 0 时(全局中断允许),MCU 才会响应中断;若该位为 1(全局中断禁止),则所有可屏蔽中断都会被忽略,仅不可屏蔽中断(NMI)能强制响应 —— 这一机制用于处理 “临界区”(如主程序与 ISR 共享数据时,需禁止中断避免数据混乱)。

其次是 “中断优先级判断”:当多个中断请求同时挂起时,中断控制器会根据预设的 “中断优先级”,选择优先级最高的中断进行响应。嵌入式系统的中断优先级通常分为 “抢占优先级” 与 “子优先级”(如 Cortex-M NVIC 控制器):抢占优先级高的中断可打断正在执行的低抢占优先级 ISR(即 “中断嵌套”);若两个中断的抢占优先级相同,则比较子优先级,子优先级高的先响应;若抢占优先级与子优先级均相同,则按 “中断编号” 的默认顺序响应(如编号小的优先)。例如,“电机过载保护中断”(抢占优先级 1)可打断正在执行的 “按键扫描中断”(抢占优先级 2),而 “串口接收中断” 与 “SPI 接收中断”(均为抢占优先级 2,子优先级 1 2)则按子优先级顺序响应。

当满足响应条件时,MCU 会启动 “中断响应序列”:首先,禁止同优先级及更低优先级的中断(防止响应过程中被打断);其次,自动保存 “上下文现场”—— 将当前的程序计数器(PC,记录下一条要执行的指令地址)、程序状态寄存器(PSR,记录 CPU 状态)、通用寄存器(R0-R3 等)的值压入栈(Stack)中,确保后续能准确恢复常规任务;最后,根据 “中断向量表” 找到对应的 ISR 入口地址,将 PC 指向该地址,正式进入 ISR 执行阶段。

(三)现场保护与 ISR 执行:事件的 “核心处理”

尽管 MCU 在中断响应阶段已自动保存部分寄存器(如 R0-R3PCPSR),但对于其他通用寄存器(如 R4-R11),若 ISR 中会修改这些寄存器的值,则需要在 ISR 开头手动进行 “现场保护”—— 将这些寄存器的值压入栈中;若 ISR 中不修改,则无需保护,以减少处理延迟。这一环节的核心原则是 “谁修改,谁保护”,避免 ISR 执行后,常规任务的寄存器值被篡改,导致程序运行异常。

中断服务程序(ISR)是中断处理的 “核心逻辑”,其设计直接决定中断处理的效率与可靠性。ISR 的核心要求是 “短小精悍”—— 仅处理与中断事件直接相关的必要操作,避免执行复杂运算、循环或调用耗时函数(如 printf、动态内存分配)。例如,按键中断的 ISR 应仅做 “置位按键标志位” 或 “读取按键值并缓存”,而将 “按键防抖处理”“执行按键对应的功能(如开灯)” 交给主程序;串口接收中断的 ISR 应仅做 “将接收数据存入缓冲区”,而将 “数据解析”“数据处理” 交给主程序。这样设计的原因在于:ISR 执行时间越长,中断延迟与嵌套冲突的风险越高,甚至可能导致低优先级中断被长期阻塞,丢失重要事件。

此外,ISR 中还需注意 “中断清除”—— 部分外设的中断请求会在事件发生后持续有效(如定时器溢出中断),若 ISR 中不手动清除 “中断挂起位”,则 ISR 执行完成后,中断控制器会认为中断请求仍存在,立即再次触发中断,导致 “中断风暴”(ISR 无限循环执行)。中断清除的方式因外设而异:有的需要清除外设自身的中断挂起位(如定时器的 SR 寄存器),有的需要通过读取数据自动清除(如串口接收数据后,读取 DR 寄存器即可清除接收中断挂起位)。

(四)现场恢复与中断返回:任务的 “无缝衔接”

ISR 执行完成后,需要进行 “现场恢复” 与 “中断返回”,确保常规任务能从被暂停的位置继续执行。现场恢复与现场保护相对应:若 ISR 开头手动保护了 R4-R11 等寄存器,则需在 ISR 结尾手动将这些寄存器的值从栈中弹出,恢复原值;若未保护,则无需操作。

中断返回的核心是执行 “中断返回指令”(如 ARM Cortex-M 的 BX LR 指令,x86 的 IRET 指令)。当 MCU 执行该指令时,会自动从栈中弹出之前保存的 PC、PSR、R0-R3 等寄存器的值,恢复 CPU 的状态与程序计数器指向 ——PC 重新指向被中断的常规任务的下一条指令,PSR 恢复中断前的 CPU 状态(如中断屏蔽位、条件标志位),R0-R3 恢复原值。同时,中断控制器会自动清除当前中断的挂起位,并重新允许同优先级及更低优先级的中断(若之前禁止),至此,整个中断流程完成,常规任务无缝衔接继续执行。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭