ucosiii輸出CPU利用率和堆疊利用率
阿新 • • 發佈:2020-12-22
程式碼如下 需要開啟統計任務並把OS_CFG_DBG_EN 置一
效果如下:
void CPUUsage (void)
{
#if OS_CFG_DBG_EN > 0
CPU_STK_SIZE free;
CPU_STK_SIZE used;
OS_ERR err;
CPU_SR cpu_sr = 0u;
OS_TCB *p_tcb;
CPU_CRITICAL_ENTER();
p_tcb = OSTaskDbgListPtr;
CPU_CRITICAL_EXIT();
printf("\r\n已用棧(B) 剩餘棧(B) 棧使用率(%%) 優先順序 CPU使用率(%%) CPU最大使用率(%%) 呼叫次數 任務名\r\n" );
for (;;)
{
if (p_tcb != (OS_TCB *)0)
{
OSTaskStkChk(p_tcb, &free, &used, &err);
printf("%4d %4d %3d%% %3d %10.2f%% %10.2f%% %8d %s \r\n",
used, free, (used * 100) / (used + free), p_tcb->Prio,
p_tcb->CPUUsage / 100.0, p_tcb->CPUUsageMax / 100.0, p_tcb->CtxSwCtr, p_tcb->NamePtr);
CPU_CRITICAL_ENTER();
p_tcb = p_tcb->DbgNextPtr; //指向下一個任務的TCB
CPU_CRITICAL_EXIT();
}
else
{
break;
}
}
}
#endif