1. 中断机制的本质与双重使能设计
中断机制是计算机系统中实现异步事件处理的核心技术,它允许外设或内部模块在特定条件触发时打断CPU当前任务,转而执行高优先级的中断服务程序(ISR)。这种机制在现代计算机架构中无处不在,从嵌入式系统到服务器级处理器都依赖中断来实现高效的事件响应。
"双重使能"指的是在中断机制中,发送端(中断源)和接收端(CPU)都需要独立启用中断功能才能完成完整的中断处理流程。这种设计类似于电话通信中的双向确认机制——不仅呼叫方要主动拨号,接听方也必须处于可接听状态。
以MIPS架构为例,其典型的三级中断时序包括:
- 中断请求(Interrupt Request):外设通过拉高中断线发出信号
- 中断响应(Interrupt Acknowledge):CPU检测到有效中断后保存现场
- 服务执行(Service Execution):跳转到ISR处理中断事务
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 发送端使能:中断源的配置要点
2.1 中断触发条件设置
发送端使能的核心是正确配置中断触发条件。常见的中断触发方式包括:
- 电平触发:中断线保持高/低电平期间持续触发
- 边沿触发:仅在信号上升沿或下降沿时触发一次
在STM32等MCU中,通过EXTI寄存器的FTSR/RTSR位可以配置触发方式:
c复制// 配置PA0引脚为上升沿触发
EXTI->RTSR |= EXTI_RTSR_TR0;
EXTI->FTSR &= ~EXTI_FTSR_TR0;
2.2 中断优先级分组
当多个中断源共存时,需要合理设置优先级。ARM Cortex-M系列采用NVIC(嵌套向量中断控制器)管理优先级,支持抢占式和子优先级:
c复制// 设置EXTI0中断抢占优先级为1,子优先级为0
NVIC_SetPriority(EXTI0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 1, 0));
关键提示:优先级配置必须在中断使能前完成,否则可能因默认优先级导致不可预期的抢占行为。
3. 接收端使能:CPU侧的中断管理
3.1 全局中断开关
CPU通过特定指令控制全局中断使能状态:
- ARM架构:CPSIE/CPSID指令
- x86架构:ST
