获取任务运行时间统计信息
简介
在FreeRTOS中,可以通过调用vTaskGetRunTimeStatus()
来统计每个任务使用CPU的时间,及其所占总时间的比例。在调试代码的时候,我们就可以通过这些信息进行优化。
相关宏的配置
若想使用此功能,宏configGENERATE_RUN_TIME_STATUS
需设置为1。
并且还需要配置其他两个宏:
portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ConfigureTimeForRunTimeStats()
配置一个高精度定时器作为时基,可以使用STM32的定时器资源。
portGET_RUN_TIME_COUNTER_VALUE() FreeRTOSRunTimeTicks
读取时基的时间值。
ConfigureTimeForRunTimeStats()
这个函数可以在timer.c里定义:
//FreeRTOS时间统计所用的节拍计时器
volatile unsigned long long FreeRTOSRunTimeTicks;
//初始化TIM3作为节拍计时器的时基
void ConfigureTimeForRunTimeStats(){
//TIM3初始化,定时器时钟为72M,分频系数72-1,所以TIM3频率为72M/72
//1Mhz,重载值为50-1,那么TIM3周期为50us
FreeRTOSRunTimeTicks = 0;
TIM3_Int_Init(50-1,72-1)