一、FreeRTOS获取运行时间戳是指获取系统运行时间(相对时间):基于 tick 计数或运行时间统计。
使用 xTaskGetTickCount(),FreeRTOS 内核维护一个 tick 计数器,每次 tick 中断自增 1。
核心 API:TickType_t xTaskGetTickCount( void );
转换为毫秒:
FreeRTOSConfig.h 中定义了 configTICK_RATE_HZ(tick 频率)
毫秒计算公式:
TickType_t tick = xTaskGetTickCount(); uint32_t ms = tick * (1000 / configTICK_RATE_HZ);
二、使用运行时间统计(Run Time Stats)
如果需要更高精度(微秒级),FreeRTOS 提供运行时间统计功能。
步骤:
(1)在 FreeRTOSConfig.h 中启用:
#define configGENERATE_RUN_TIME_STATS 1 #define configUSE_STATS_FORMATTING_FUNCTIONS 1
(2)提供一个高精度计数器
需要实现两个宏:
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() // 初始化定时器 #define portGET_RUN_TIME_COUNTER_VALUE() // 返回当前计数值
通常使用硬件定时器(如 1MHz)
(3)获取运行时间
uint32_t runtime = portGET_RUN_TIME_COUNTER_VALUE();
(4)也可用 FreeRTOS 提供的统计 API
vTaskGetRunTimeStats() ulTaskGetRunTimeCounter() ulTaskGetIdleRunTimeCounter()
我要赚赏金
