分类:
2009-05-30 22:06:12
----------------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://dreamlcr.cublog.cn/
----------------------------------------------------
uC/OS-II的统计任务
OS_TaskStat():统计CPU运行时间的任务。
如果应用程序打算使用统计任务,那么必须在初始化时建立的第一个也是惟一的一个任务中调用统计任务初始化函数OSStatInit()(见文件OS_CORE.C)。换句话说,在调用系统启动函数OSStart()之前,用户初始代码中必须先建立一个任务,在这个任务中调用系统统计初始化函数OSStatInit(),然后再建立应用程序中的其他任务。以下是统计任务的示意性代码。
初始化统计任务:
/**********************************************************/
int main(void)
{
OSInit(); /* 初始化uC/OS-II */
/* 安装uC/OS-II的任务切换向量 */
/* 创建用户起始任务(为了方便讨论,这里以TaskStart()作为起始任务) */
OSStart(); /* 开始多任务调度 */
return 0;
}
void TaskStart(void *pdata)
{
/* 安装并启动uC/OS-II的时钟节拍 */
OSStatInit(); /* 初始化统计任务 */
/* 创建用户应用程序任务 */
for(;;) {
/* 这里是TaskStart()的代码 */
}
}
/**********************************************************/
注意:此任务计算的是从此统计任务执行OSTimeDly(OS_TICKS_PER_SEC)之后的一秒钟这段时间内CPU的利用率,而不是每一秒钟运行一次此任务来计算CPU的利用率,也可能是数秒钟之后才执行此统计任务一次。
也就是说,当前这次计算和显示的CPU利用率是现在时间之前的一秒或者是现在时间之前的某段连续时间再之前的一秒内CPU的利用率,反正计算的都是一秒钟时间内的CPU利用率,计算的总时间是一秒。