外部中断选择边沿还是电平触发?怎样避免漏事件和中断风暴?
边沿适合捕获转换但处理期间再次变化可能合并或丢失;电平能持续表达未处理条件,却可能在源未清除时反复进入。ISR 应先确认来源,按硬件规定清标志,并把业务处理移交任务。
Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
边沿适合捕获转换但处理期间再次变化可能合并或丢失;电平能持续表达未处理条件,却可能在源未清除时反复进入。ISR 应先确认来源,按硬件规定清标志,并把业务处理移交任务。
锁应覆盖一个不可分割事务:配置目标器件所需模式和频率、拉低 CS、完成命令与数据阶段、确认总线空闲、释放 CS。只保护单次字节发送会让另一设备在事务中间改配置或抢占总线。
独立看门狗通常依靠独立低速时钟检测长时间失活;窗口看门狗要求只在允许时间窗内刷新,既能发现过慢也能发现异常快循环。时钟源、调试冻结和低功耗行为需按芯片确认。
DAC 直接提供量化电压,纹波小但受分辨率、建立时间、输出缓冲和负载限制;PWM 加滤波成本低、范围灵活,但纹波、响应时间和定时器资源相互制约。选择应由带宽、精度、负载和成本决定。
CONTROL 寄存器控制 Thread Mode 的特权级和所用栈指针;Handler Mode 始终使用特权执行。非特权线程不能直接自行恢复特权,通常通过 SVC 进入异常,由受信任处理代码检查请求后完成操作。
ABI 和异常模型可能要求异常入口保持 8 字节栈对齐;若被打断时 SP 未对齐,硬件可在栈帧中加入填充并用 xPSR 标记。手工解析或汇编上下文切换若忽略该位,会错认寄存器和返回位置。
异常进入后 LR 可保存特殊 EXC_RETURN 编码,它告诉处理器返回 Thread 还是 Handler Mode、使用 MSP 还是 PSP,以及栈帧是否含浮点上下文。执行异常返回序列时硬件据此自动出栈,而不是跳到该数值地址。
PRIMASK 屏蔽可配置优先级异常;BASEPRI 只屏蔽达到某一优先级阈值及更低紧急度的异常;FAULTMASK 屏蔽范围更强,只留下 NMI。不同 Cortex-M 型号支持情况不同,修改后必须按原值恢复。