RT-Thread的CPU占用率查看

今天看到朋友的博客,他在描述RT-Thread钩子函数时,简单提了下RT-Thread中CPU占用,没有具体描述,所以我在这里做下补充。

RT-Thread查看CPU使用率时,我知道的有这种方法。

大概原理就是,在相同时间内,统计CPU在不调度的情况下和CPU在调度情况下变量的计数值,得出CPU空闲率,CPU占用率 = 1-空闲率。

具体实现如下:

首先定义节拍数。

RT-Thread的CPU占用率查看

定义钩子函数

RT-Thread的CPU占用率查看

将钩子函数添加到空闲线程中

      

RT-Thread的CPU占用率查看

在钩子函数cpu_usage_idle_hook(void)中添加如下代码

rt_tick_t tick; rt_uint32_t count; volatile rt_uint32_t loop; if (total_count == 0) { rt_enter_critical(); //关闭系统调度 tick = rt_tick_get(); while(rt_tick_get() - tick < CPU_USAGE_CALC_TICK) { total_count ++; loop = 0; while (loop < CPU_USAGE_LOOP) loop ++; } rt_exit_critical();// 打开系统调度 } count = 0; /* get CPU usage */ tick = rt_tick_get(); while (rt_tick_get() - tick < CPU_USAGE_CALC_TICK) { count ++; loop = 0; while (loop < CPU_USAGE_LOOP) loop ++; } /* calculate major and minor */ if (count < total_count) { count = total_count - count; cpu_usage_major = (count * 100) / total_count; cpu_usage_minor = ((count * 100) % total_count) * 100 / total_count; } else { total_count = count; /* no CPU usage */ cpu_usage_major = 0; cpu_usage_minor = 0; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwgyf.html