第4章 中断系统与定时器深度解析:中断优先级、嵌套、响应时间、定时器模式与PWM
中断与定时器是嵌入式系统的核心资源,面试中高频考察对优先级分组、嵌套机制、响应时间计算、定时器工作模式及PWM生成的理解。本章从面试问答与项目实战两个维度,帮你构建可迁移的回答框架。
中断优先级分组(以STM32 NVIC为例)
| 分组编号 | 抢占优先级位数 | 响应优先级位数 | 应用场景 |
|---|---|---|---|
| NVIC_PriorityGroup_0 | 0 bit | 4 bit | 所有中断同级,无嵌套 |
| NVIC_PriorityGroup_1 | 1 bit | 3 bit | 2级嵌套,低延迟场景 |
| NVIC_PriorityGroup_2 | 2 bit | 2 bit | 4级嵌套,通用场景 |
| NVIC_PriorityGroup_3 | 3 bit | 1 bit | 8级嵌套,实时性要求高 |
| NVIC_PriorityGroup_4 | 4 bit | 0 bit | 16级嵌套,强实时系统 |
定时器工作模式对比
| 模式 | 工作原理 | 典型应用 | 关键寄存器 |
|---|---|---|---|
| 计数模式 | 对内部时钟或外部脉冲计数 | 延时、频率测量 | CNT, PSC, ARR |
| 输入捕获 | 捕获外部信号边沿,记录CNT值 | 脉宽测量、编码器解码 | CCR, CCER, CCMR |
| 输出比较 | CNT与CCR匹配时输出电平跳变 | 产生可调脉冲、IR载波 | CCR, CCER, CCMR |
| PWM模式 | CNT与CCR比较,自动翻转输出电平 | 电机调速、LED调光、DAC | CCR, ARR, CCER |
| 单脉冲模式 | 触发一次后产生一个可编程脉冲 | 闸门控制、触发信号 | CR2, PSC, ARR |
Q1:请解释单片机中断优先级的概念,以及如何配置中断嵌套?
Q2:如何计算和优化单片机的中断响应时间?
Q3:请说明定时器的各种工作模式,以及如何用定时器产生PWM信号?
📁 项目案例:基于STM32定时器PWM的直流电机闭环调速系统
项目名称 智能AGV小车驱动控制模块
业务背景 某智慧仓储AGV的轮毂电机需要精确调速,要求启停平稳、响应快、支持多电机差速转向。
规模指标 PWM频率20kHz,调速范围0–3000rpm,速度控制精度±1%,系统响应时间<5ms,支持4路电机独立控制。
技术栈 STM32F407 + TIM1/TIM8高级定时器 + 正交编码器 + 增量式PID + 主从定时器同步
核心难点
- 多路PWM同步输出,相位一致性要求高(电机差速控制)。
- 中断响应延迟导致PID控制周期抖动,影响调速精度。
- 电机换向时反电动势干扰PWM波形,造成误触发。
面试高频追问
- Q:如何保证多路PWM同步? 使用高级定时器主从模式,TIM1为主定时器产生同步信号,TIM8为从定时器跟随更新,所有通道同时更新CCR值,相位误差<0.1°。
- Q:中断延迟怎么优化? PID计算移至主循环,定时器中断仅做编码器计数更新和标志位设置,ISR执行时间从80μs降至5μs,控制周期抖动控制在±2μs。
- Q:PWM频率如何选择? 基于电机电感特性和人耳噪声,选20kHz(高于人耳听觉上限),同时保证ARR≥1000以获得0.1%占空比分辨率。
💬 可迁移回答话术 “在这个项目中,我使用STM32高级定时器的主从模式实现多路PWM同步输出,通过配置TIM1为主定时器、TIM8为从定时器并同步更新,保证了相位一致性。针对中断延迟问题,我将PID计算移到主循环,中断只做编码器计数更新和标志位设置,减少了ISR执行时间,将控制周期抖动控制在±2μs以内。这一方案可迁移到任何需要多路同步PWM输出的场景,如机器人关节驱动、多轴运动控制。”
💡 核心记忆点 中断回答三要素:优先级分组 + 嵌套条件 + 响应时间优化。定时器回答三步骤:模式分类 → PWM原理 → 配置参数(PSC/ARR/CCR)。面试时务必结合项目实例。
📌 面试加分技巧 回答中断问题时主动提及“尾链技术”“抢占优先级与响应优先级的区别”;回答PWM问题时主动说出“频率与分辨率的权衡公式:分辨率 = 1 / (ARR+1)”,体现数学思维。
⚠️ 常见扣分点 ① 说不清硬件优先级与软件优先级的关系;② 混淆PWM频率和占空比的调节方式;③ 项目案例中缺少量化指标(如频率、精度、延迟数值)。