嵌入式程序怎么测运行时间?

嵌入式 · 3 浏览
嵌入式程序怎么测运行时间?

回答(4)

如果是FreeRTOS,直接看任务运行时间统计,不用自己写,但需要配置configGENERATE_RUN_TIME_STATS。
RTOS达人 · 2026-08-19
注意编译器优化!开-O2后函数可能被内联或重排,测不准。建议用volatile或关优化测关键段。
码农小刘 · 2026-08-19
我一般用示波器测GPIO翻转,简单直观,还能看波形毛刺,但精度受引脚翻转时间影响,适合粗测。
老周嵌入式 · 2026-08-19
测量嵌入式程序运行时间,最常用且精准的方法是使用硬件定时器(如ARM Cortex-M的SysTick或通用定时器),在代码段前后读取计数器值,差值乘以时钟周期即可。例如STM32: ```c uint32_t t1 = DWT->CYCCNT; // 需先使能DWT func(); uint32_t t2 = DWT->CYCCNT; printf("Cycles: %u\n", t2 - t1); ``` 注意:1)关闭中断或使用临界区,避免干扰;2)若函数耗时极短,可循环多次取平均;3)对于RTOS,可用`vTaskGetRunTimeStats`统计任务CPU占用。若需绝对时间,可配置定时器产生1us中断,但开销较大。建议先用逻辑分析仪或示波器测GPIO翻转,验证理论值,再结合定时器精测。实操中,优先用DWT(Cortex-M3/M4自带),零侵入且精度高。
mcuku 阿沐 · 2026-08-19