在Cortex-M上可用DWT->CYCCNT做周期级计时:先使能CoreDebug->DEMCR的TRCENA位,再置DWT->CTRL的CYCCNTENA,读取前清零DWT->CYCCNT。测量时在函数前后各读一次,差值即周期数,纳秒耗时=周期数×1e9/SystemCoreClock。注意CYCCNT为32位,在72MHz下约59.6s回绕,长函数需处理溢出(差值用无符号减法天然正确,但跨多次回绕需额外计数)。实操建议:用__disable_irq保护读取序列避免中断干扰,或多次采样取最小值消除抖动;测量点尽量靠近被测代码,避免编译器重排(加__DSB()或volatile);剖析时用宏封装BEGIN/END,配合静态数组记录各函数周期,最后统一换算输出。注意DWT在部分低端内核(如M0)不可用,需确认芯片支持。