FreeRTOS 可以通过函数 vTaskGetRunTimeStats()来统计每个任务使用 CPU 的时间,以及所使用的时间占总时间的比例。在调试代码的时候我们可以根据这个时间使用值来分析哪个任务的 CPU 占用率高,然后合理的分配或优化任务。
本篇博文我们就来学习如何使用 FreeRTOS 运行时间状态统计功能。
要使用此功能的话宏 configGENERATE_RUN_TIME_STATS 必须为 1,还需要在定义其他两个宏。portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()配置一个高精度定时器/计数器提供时基。portGET_RUN_TIME_COUNTER_VALUE()读取时基的时间值。
这三个宏在 FreeRTOSConfig.h 中定义,如下:
#define configGENERATE_RUN_TIME_STATS 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() ConfigureTimeForRunTimeStats()
#define portGET_RUN_TIME_COUNTER_VALUE() FreeRTOSRunTimeTicks