使用DWT周期计数器测中断响应延迟时,编译器优化等级会显著影响结果。关键点:1) 测量代码本身(读DWT->CYCCNT、记录时间戳)在-O0下会引入额外指令和内存访问,使测得的延迟偏大;-O2/-Os下寄存器分配更优,测量开销更小。2) 被中断的“主循环”代码优化等级不同,其执行状态和流水线状态不同,中断到达时的上下文(如是否在访存、分支预测状态)会变化,导致延迟抖动。3) 优化可能重排或删除用于触发中断的代码(如置位外设寄存器),需用volatile或内存屏障保证顺序。实操建议:测量函数用__attribute__((noinline))并固定优化等级;对比时保持主程序优化等级一致;用DWT->CYCCNT前后差值并减去测量开销(空测一次);建议在-O2下测量并单独评估-O0的偏差,报告时注明优化等级和测量方法。