嵌套中断(Nested Interrupt)

基于硬件优先级的中断嵌套机制,高优先级中断可抢占低优先级ISR执行。

机制定义

IRQ High Priority → preempt IRQ Low Priority → context save → ISR nesting → restore

执行流程

1. INT1(低优先级)进入ISR
2. INT0(高优先级)触发抢占
3. CPU自动保存INT1上下文
4. 执行INT0 ISR
5. INT0结束后恢复INT1

关键API(v2)

中断初始化

os_interrupt_init()

中断调度请求

os_schedule_request()

演示代码

#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抢占
}

/* =========================
 * 系统入口
 * ========================= */
void hrtos_main(void)
{
    IT0 = 1;
    IT1 = 1;

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

    EX0 = 1;
    EX1 = 1;
}

系统意义

嵌套中断机制保证高优先级事件可立即打断低优先级ISR执行,是实时性上限的重要保障。