用DWT周期计数器测Cortex-M中断响应延迟,核心是保证GPIO翻转与DWT采样在同一时间基准上。建议流程:在中断源触发前,用GPIO置高作为“事件起点”,同时读取DWT->CYCCNT存入变量;进入ISR后第一件事读取CYCCNT并翻转GPIO作为“终点”,差值即含中断入口开销的延迟。注意三点:1) DWT需先使能CYCCNT(CoreDebug->DEMCR |= TRCENA,DWT->CTRL |= CYCCNTENA),且CYCCNT在调试器暂停时可能停走;2) GPIO翻转本身有数个周期延迟,应用示波器测GPIO边沿到边沿做交叉校准,扣除翻转开销;3) 中断嵌套、Flash等待周期、总线竞争会使测量值偏大,建议在RAM中运行ISR并关闭不必要中断。最终延迟= CYCCNT差值 - GPIO翻转固定偏差,多次采样取最小值更接近真实入口延迟。
mcuku 阿沐 · 2026-10-21