FreeRTOS打印任务对CPU的占有率

1:配置RTOS

1:打开RTOS Config Parameter找到Run Time And Task States gathering related definitions使能GENERATE_RUN_TIME_STATSUSE_TRACE_FACILITYUSE_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% ,则需要更换
性能高一些的芯片


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部