|
发表于 2016-8-22 10:49:29
|
显示全部楼层
在你的一个任务里面调用这个函数,即可,另外你的统计任务要初始化:
/*
*********************************************************************************************************
* 函 数 名: DispTaskInfo
* 功能说明: 将uCOS-II任务信息打印到串口
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
static void DispTaskInfo(void)
{
OS_TCB *ptcb; /* 定义一个任务控制块指针, TCB = TASK CONTROL BLOCK */
OS_STK_DATA stk; /* 用于读取任务栈使用情况 */
ptcb = &OSTCBTbl[0]; /* 指向第1个任务控制块(TCB) */
/* 打印标题 */
printf("==================================================\\r\\n");
printf(" 优先级 使用栈 剩余栈 百分比 任务名\\r\\n");
printf(" Prio Used Free Per Taskname\\r\\n");
/* 遍历任务控制块列表(TCB list),打印所有的任务的优先级和名称 */
while (ptcb != NULL)
{
/*
ptcb->OSTCBPrio : 任务控制块中保存的任务的优先级
ptcb->OSTCBTaskName : 任务控制块中保存的任务名称,需要在创建任务的时候
调用OSTaskNameSet()指定任务名称,比如:
OSTaskNameSet(APP_TASK_USER_IF_PRIO, "User I/F", &err);
*/
OSTaskStkChk(ptcb->OSTCBPrio, &stk); /* 获得任务栈已用空间 */
printf(" %2d %5d %5d %02d%% %s\\r\\n", ptcb->OSTCBPrio,
stk.OSUsed, stk.OSFree, (stk.OSUsed * 100) / (stk.OSUsed + stk.OSFree),
ptcb->OSTCBTaskName);
ptcb = ptcb->OSTCBPrev; /* 指向上一个任务控制块 */
}
}
=======================================
显示效果:
|
|