1、FreeRTOS中,默认是没有打开查看各任务CPU使用率的
2、要想实现查看各任务CPU使用率,需要打开宏和定义下列宏
#define configGENERATE_RUN_TIME_STATS 1//打开运行时间统计功能
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS configureTimerForRunTimeStats//初始化硬件定时器
#define portGET_RUN_TIME_COUNTER_VALUE getRunTimeCounterValue//获取定时器的计数值
官网对此也有说明:
需要外部定义一个高精度定时器,用来统计运行时间。
这样就会浪费一个定时器啊,同时还多了一个不停的中断
3、FreeRTOS本身不是有用一个定时器去切换任务吗,如果要求精度不高,可不可以用系统节拍去粗略估算FreeRTOS的CPU使用率呢?
经过摸索,还真可以,但是不知道准不准,可以这样配置:
#define configGENERATE_RUN_TIME_STATS 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() xTaskGetTickCount()
#define portGET_RUN_TIME_COUNTER_VALUE() xTaskGetTickCount()
portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()宏只在vTaskStartScheduler启动任务调度时初始化运行一次,不用管他,随便定义下
主要是要提供计数值portGET_RUN_TIME_COUNTER_VALUE()的定义,所以按照上面定义。
4、按上面配置后,还真可以啊:
也符合结果,lwip_init任务有个while(1)死循环,所以一直占用cpu。
所以:不消耗另外的定时间器,在FreeRTOS中可以粗略估算CPU使用率。