FreeRTOS---------CPU使用率统计

CPU利用率的基本概念

CPU使用率其实就是系统运行的程序占用的CPU资源,表示机器在某段时间程序运行 的情况。

一个系统设计的好坏,可以使用CPU使用率来衡量,一个好的系统必然是能完美响应 急需的处理,并且系统的资源不会过于浪费(性价比高)。


相关配置

配置时间基准

FreeRTOS 是使用一个外部的变量进行统计时间的,并且消耗一个高精度的定时器,其用于定时的精度是系统时钟节拍的10-20倍。

需要实现一个中断频率为系统时钟节拍的10-20倍的定时器,用于系统运行时间统计,其实很简单, 只需将CPU_RunTime变量自加即可,这个变量是用于记录系统运行时间的。

在定时器中断任务中,只需要让变量一直++就可以。


宏定义

(需要实现5个宏定义,三个相关功能定义的配置,两个自己手动配置)

然后我们就可以在任务中调用vTaskGetRunTimeStats()和vTaskList()函数获得任务的相关信息与CPU使用率的相关信息,然后打印出来即可。

使用 vTaskGetRunTimeStats()函数需要将宏 configGENERATE_RUN_TIME_STATS、configUSE_TRACE_FACILITY 及 configUSE_STATS_FORMATTING_FUNCTIONS都设置为1

同时用户还需在FreeRTOSConfig.h头文件中实现如下两个宏

  • pOrtCONFIGURE_TIMIER_FOR_RUN_TIMESTATS():用于初始化任务运行时间信息统计功能的时间基准。时间基准一般使用定时器来提供,并且要求这个定时器的精度是系统时钟节拍精度的10倍以上。
  • portGET_RUN_TIME_COUNTER_VALUE():用于获取统计任务运行时间信息的计数器值,利用这个计数值来计算各任务运行时间百分比。

注意 :使用vTaskGetRunTimeStats()函数会降低系统的实时性。一般用于代码调式阶段


运行

定义一个足够大的数组,调用函数vTaskList();,数组作为参数返回任务名,任务状态,优先级,剩余栈,任务序号等信息。

定义一个足够大的数组,调用函数 vTaskGetRunTimeStats();,数组作为参数返回任务名,运行计数,使用率等信息。

直接打印出来即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值