1:配置RTOS
1:打开RTOS Config Parameter
找到Run Time And Task States gathering related definitions
使能GENERATE_RUN_TIME_STATS
USE_TRACE_FACILITY
USE_STATS_FORMATTING_FUNCTIONS
如果不使能,API将使用不了
2:添加高精度计时器
因为OS的的节拍周期是1ms
需要一个更高精度周期的计数器来对它进行检测,从而得出任务占用率
根据参考手册 计数器需要在 10us - 50us 之间 ,当计数值达到时需要产生
一个中断来更新计数值
3:配置其他需要用到的外设和时钟
4:打开工程
定义一个全局变量来保存TIM6的计数更新
下图两个函数是系统提供的,需要在里面打开中断,计数清0
并且返回全局变量
找到TIM6的中断回调函数
我设置的更新事件触发中断,追源码找到更新事件触发的回调函数
在任务中调用此接口
void vTaskGetRunTimeStats( char *pcWriteBuffer )
参数是一个保存结果的buffer
最后打印buffer就可以看到任务对CPU的占用率
通过任务对CPU的占用率,可以合理的分配任务资源
这对于单片机来说是很重要的
如果空闲任务一直高占用CPU,说明选型的CPU 性能过剩,需要换到较低的芯片上
如果某个任务一直占用cpu,或者空闲任务占有率低于10% ,则需要更换
性能高一些的芯片
|