嵌套中断(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)
中断初始化
中断调度请求
演示代码
#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执行,是实时性上限的重要保障。