嵌套中断(Nested Interrupt)
嵌套中断机制允许高优先级中断抢占低优先级中断执行, 是RTOS实时响应能力的重要组成部分。
机制定义
Nested Interrupt = 中断优先级判断 + 上下文保存 + 嵌套执行 + 恢复返回
相关 API
执行流程
1. 低优先级中断触发
CPU进入ISR1执行。
2. 高优先级中断到来
中断控制器检测到更高优先级请求。
3. 上下文保存
保存ISR1执行状态到栈。
4. 嵌套进入ISR2
执行更高优先级中断处理。
5. 逐级恢复
ISR2 → ISR1 → 任务恢复执行。
演示代码
#include "HRTOS.h"
/* 低优先级中断 */
void ISR_LOW(void)
{
os_interrupt_enter();
while(1)
{
// 等待被高优先级抢占
os_nop();
}
os_interrupt_exit();
}
/* 高优先级中断 */
void ISR_HIGH(void)
{
os_interrupt_enter();
os_interrupt_flag_set();
os_interrupt_exit();
}
系统意义
嵌套中断机制使实时系统能够优先响应关键事件, 在保证高优先级任务及时性的同时维持系统整体可预测性。