HRTOS
Interrupt Driven Model

嵌套中断

基于 HRTOS 中断驱动模型,展示高优先级中断如何抢占低优先级 ISR 执行, 实现实时系统中关键事件的快速响应机制。

核心特性

  • 基于硬件优先级的中断嵌套
  • 高优先级中断可抢占低优先级 ISR
  • 自动上下文保存与恢复
  • 实时性上限保障机制

应用场景

嵌套中断机制适用于需要同时处理多个中断源的实时系统, 确保高优先级事件(如紧急故障、安全关键信号)能够立即响应, 不受低优先级中断处理时间的影响。

响应延迟 微秒级
优先级数 硬件支持
Mechanism Definition

机制定义

嵌套中断的核心概念与工作原理

嵌套中断(Nested Interrupt)是指在中断服务程序(ISR)执行过程中, 如果出现更高优先级的中断请求,CPU 可以暂停当前 ISR 的执行, 转而响应高优先级中断,待高优先级中断处理完成后,再恢复原 ISR 的执行。

硬件优先级

嵌套中断基于硬件中断优先级机制。每个中断源都有独立的优先级配置, 高优先级中断可以自动抢占低优先级中断的执行。

上下文自动保存

当发生中断嵌套时,CPU 硬件会自动保存当前执行上下文(程序计数器、状态寄存器等), 确保中断返回后能够准确恢复执行现场。

ISR 嵌套执行

多个 ISR 可以形成嵌套调用链,高优先级 ISR 执行完成后, 通过中断返回指令依次恢复低优先级 ISR 的执行。

实时性保障

嵌套中断机制确保关键事件能够立即响应,不受低优先级中断处理时间的影响, 是实时系统满足严格时间约束的重要保障。

核心流程: IRQ High Priority → preempt IRQ Low Priority → context save → ISR nesting → restore
Execution Flow

执行流程

嵌套中断的完整执行路径

1INT1(低优先级)进入 ISR,开始执行中断服务程序
2INT0(高优先级)触发,硬件检测到优先级更高
3CPU 自动保存 INT1 的当前上下文到栈中
4跳转执行 INT0 ISR,处理高优先级中断
5INT0 ISR 执行完成,通过中断返回指令恢复 INT1 上下文
INT1 触发 → 进入 ISR → INT0 高优先级触发 → 自动保存 INT1 上下文 → 执行 INT0 ISR → INT0 完成 → 恢复 INT1 上下文 → INT1 继续执行
Key APIs (v2)

关键 API

HRTOS v2 中断管理相关接口

中断初始化

函数:os_interrupt_init()

功能:初始化 HRTOS 中断管理系统

参数:

返回值:初始化状态

中断调度请求

函数:os_schedule_request()

功能:请求中断后的任务调度

参数:

返回值:

Demo Code

演示代码

嵌套中断的完整实现示例

中断服务程序实现

高优先级 INT0_ISR 和低优先级 INT1_ISR 的实现

#include "hrtos.h"

sbit LED_HIGH = P1^0;
sbit LED_LOW  = P1^1;

/* =========================
 * 高优先级中断 INT0
 * ========================= */
void INT0_ISR(void)
{
    LED_HIGH = ~LED_HIGH;

    // 高优先级执行
}

/* =========================
 * 低优先级中断 INT1
 * ========================= */
void INT1_ISR(void)
{
    LED_LOW = ~LED_LOW;

    // 在执行过程中可能被INT0抢占
}

系统初始化与中断配置

hrtos_main 函数,配置中断优先级并启用中断

/* =========================
 * 系统入口
 * ========================= */
void hrtos_main(void)
{
    IT0 = 1;   // INT0 下降沿触发
    IT1 = 1;   // INT1 下降沿触发

    PX0 = 1;   // INT0 高优先级
    PX1 = 0;   // INT1 低优先级

    EX0 = 1;   // 启用 INT0
    EX1 = 1;   // 启用 INT1
}
System Significance

系统意义

嵌套中断在实时系统中的重要作用

实时性保障 嵌套中断机制保证高优先级事件可立即打断低优先级 ISR 执行,是实时性上限的重要保障。
优先级管理 通过硬件优先级配置,实现中断源的分级管理,确保关键事件优先处理。
响应能力提升 嵌套中断显著提升系统对多中断源的并发响应能力,满足复杂实时应用需求。
系统本质: 嵌套中断是 HRTOS 中断驱动模型的核心机制,通过硬件优先级和自动上下文管理, 实现了实时系统中关键事件的快速响应和多中断源的并发处理。
Important Notes

注意事项

使用嵌套中断时需要关注的关键点

优先级配置

必须正确配置中断优先级寄存器(如 PX0、PX1),确保高优先级中断能够正确抢占低优先级中断。 优先级配置错误可能导致关键事件无法及时响应。

栈空间管理

嵌套中断会增加栈空间的使用,每层嵌套都需要保存完整的上下文信息。 必须确保系统栈空间足够,避免因栈溢出导致的系统崩溃。

ISR 执行时间

低优先级 ISR 的执行时间应尽可能短,避免长时间占用 CPU 资源。 过长的 ISR 会增加高优先级中断的响应延迟,影响系统实时性。

共享资源保护

在嵌套中断环境中访问共享资源(如全局变量、硬件寄存器)时, 需要使用适当的同步机制(如关中断、信号量)防止数据竞争。