CPU使用率的计算,先去统计CPU的空闲率,100%-空闲率=CPU使用率。
临界区的概念:临界区有进入和退出操作,在进入临界区和退出临界区这段时间内执行的代码是独享CPU使用权的!
rt_enter_critical(); //进入临界区
tick = rt_tick_get();
while (rt_tick_get() - tick < 10)
{
total_count ++;
loop = 0;
while (loop < 100) loop ++;
}
rt_exit_critical();//退出临界区
计算原理:这段在临界区内执行的代码在10个系统滴答时间内让total_count自加,这里的loop是一个循环,loop加100次,total_count才加一次,作用是让CPU完全发挥作用,这里是计算了完全使用CPU时,total_count能自加多少个。
然后是系统不进入临界区来执行这段代码,因为这段代码放在空闲任务中,只有其他任务执行完之后才会运行空闲任务(count++),得到的是count。
count/total_count就是CPU的空闲率,用100%减去空闲率就是使用率。
/*
* 程序清单:空闲任务钩子例程
*
* 这个例程设置了一个空闲任务钩子用于计算CPU使用率,并创建一个线程循环打印CPU使用率
* 通过修改CPU使用率打印线程中的休眠tick时间可以看到不同的CPU使用率
*/
#in