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将使用不了
![在这里插入图片描述](https://img-blog.csdnimg.cn/762cdf78954d46b193eaa1de147c88cc.png)
2:添加高精度计时器
因为OS的的节拍周期是1ms
需要一个更高精度周期的计数器来对它进行检测,从而得出任务占用率
根据参考手册 计数器需要在 10us - 50us 之间 ,当计数值达到时需要产生
一个中断来更新计数值
![在这里插入图片描述](https://img-blog.csdnimg.cn/e112bd857cc1431d9f40a33d0dde202f.png)
3:配置其他需要用到的外设和时钟
4:打开工程
定义一个全局变量来保存TIM6的计数更新
下图两个函数是系统提供的,需要在里面打开中断,计数清0
并且返回全局变量
![在这里插入图片描述](https://img-blog.csdnimg.cn/0860cd38f27d4c80b88e854dc4a54b67.png)
找到TIM6的中断回调函数
我设置的更新事件触发中断,追源码找到更新事件触发的回调函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/0ce5db5cdbc64116a37885261bed24c9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5ryP5rSe55m-5Ye6,size_17,color_FFFFFF,t_70,g_se,x_16)
在任务中调用此接口
void vTaskGetRunTimeStats( char *pcWriteBuffer )
参数是一个保存结果的buffer
最后打印buffer就可以看到任务对CPU的占用率
通过任务对CPU的占用率,可以合理的分配任务资源
这对于单片机来说是很重要的
如果空闲任务一直高占用CPU,说明选型的CPU 性能过剩,需要换到较低的芯片上
如果某个任务一直占用cpu,或者空闲任务占有率低于10% ,则需要更换
性能高一些的芯片