如果想查看FreeRTOS任务的运行状态,可以使用下面两个函数:
1. vTaskList
vTaskList((char *)&pcWriteBuffer);
使用该函数前要在文件FreeRTOSConfig.h中,设置宏:
#define configUSE_TRACE_FACILITY 1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
2. vTaskGetRunTimeStats
vTaskGetRunTimeStats((char *)&pcWriteBuffer);
使用该函数前要在文件FreeRTOSConfig.h中,设置宏define configGENERATE_RUN_TIME_STATS为1。
#define configGENERATE_RUN_TIME_STATS 1
configGENERATE_RUN_TIME_STATS打开,它只是某种计时器的计数器值。需要在FreeRTOSConfig.h中配置两个应用程序功能配置的宏:
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() AppConfigureTimerForRuntimeStats()
#define portGET_RUN_TIME_COUNTER_VALUE() AppGetRuntimeCounterValue()
第一个是在RTOS启动时配置Timer,第二个是返回实际的计时器计数器值。一般的经验法则是,用于测量任务的计时器应该比实际的滴答计数器快10倍。
3. STM32F107示例代码
3.1 配置定时器TIM6,每100us中断一次(速度是SysTick的10倍),定时中断累加runtimeCounter。
/*-----------------------------------------------------------------------------------*/
void MX_TIM6_Init(void)