使用DWT周期计数器测量函数耗时,需先使能DWT。在Cortex-M3/M4/M7上,通过CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; 然后DWT->CYCCNT = 0; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; 即可启动。测量时在函数前后读取DWT->CYCCNT,差值乘以周期时间(1/主频)得到纳秒。注意:1) 确保DWT未被调试器占用;2) 计数器32位,主频高时约数秒溢出,测量长函数需处理溢出;3) 中断可能干扰,建议关闭中断或多次测量取最小值;4) 编译器优化可能重排指令,使用内存屏障或volatile;5) 不同内核DWT实现有差异,如M0/M0+无DWT;6) 周期数包含流水线开销,对极短函数需扣除。