在Cortex-M上用DWT->CYCCNT测函数耗时的关键是:先使能DWT(CoreDebug->DEMCR |= TRCENA),再置DWT->CTRL的CYCCNTENA位,读取前后差值delta,耗时=delta/SystemCoreClock。纳秒级精度取决于主频,例如168MHz下1cycle≈5.95ns,单次测量分辨率即一个周期,无法真正低于1cycle,需多次调用取平均提高有效分辨率。溢出处理:CYCCNT是32位向上计数器,168MHz下约25.6s回绕一次,短函数测量一般不会溢出,但长测量或中断嵌套时需处理。稳妥做法是记录起始值t0,结束时读t1,若t1<t0则delta=(0xFFFFFFFF-t0)+t1+1;更严谨可配合DWT->CYCCNT的两次采样或使用64位软件扩展(在SysTick中断里累加高位)。注意:调试器暂停时CYCCNT可能停走,测量前关闭断点;多核或低功耗模式下DWT可能停止,需确认时钟。建议封装成inline函数减少测量开销,并校准空函数开销后扣除。