|
while (DEF_TRUE) /* Task body, always written as an infinite loop. */
{
GPIOF->ODR ^= 0x0040;
OSTimeDly(5000,OS_OPT_TIME_DLY,&err);
CPU_CRITICAL_ENTER();
/* 打印标题 */
printf(" Prio Used Free Per CPU Taskname\r\n");
p_tcb = OSTaskDbgListPtr;
/* 遍历任务控制块列表(TCB list),打印所有的任务的优先级和名称 */
while (p_tcb != (OS_TCB *)0)
{
CPU = (float)p_tcb->CPUUsage / 100;
printf(" %2d %5d %5d %02d%% %5.2f%% %s\r\n",
p_tcb-> rio,
p_tcb->StkUsed,
p_tcb->StkFree,
(p_tcb->StkUsed * 100) / (p_tcb->StkUsed + p_tcb->StkFree),
CPU,
p_tcb->NamePtr);
p_tcb = p_tcb->DbgNextPtr;
}
CPU_CRITICAL_EXIT();
}
第一次打印出来的信息是正常的,以后每次打印第一个任务的任务名都没有、其它的正常,然后本任务堆栈每次增加18个字节,直到溢出。
|
|