使用ucos有段时间了,一次需求修改后好像有卡顿现象,可能是cpu使用率高了,需要优化一下, 不过最好先看下cpu使用率,于是找了下资料,发现统计任务启用后就可以查看了, 顺便还能看堆栈使用情况等,记录下使用须知。
创建一个任务后,在这个任务里面创建其它任务之前调用OSStatInit (这个函数可以执行统计任务检测堆栈,CPU使用率),
定义下面的函数,然后定时调用即可打印堆栈,CPU使用率信息。。。
#include "ucos_ii.h"
。。。
。。。
void osStaDisplay(void)
{
OS_TCB *ptcb = OSTCBList;
if(ptcb)
do{
printf("%s\t", ptcb->OSTCBTaskName);
printf(" TaskPrio:%d used/free:%d/%d usage:%%%d\r\n", ptcb->OSTCBPrio, ptcb->OSTCBStkUsed, ptcb->OSTCBStkSize * sizeof(OS_STK) - ptcb->OSTCBStkUsed, ptcb->OSTCBStkUsed * 100 / (ptcb->OSTCBStkSize * sizeof(OS_STK) ));
// ptcb->OSTCBCtxSwCtr
// ptcb->OSTCBCyclesStart
// ptcb->OSTCBCyclesTot
OSTimeDly(OS_TICKS_PER_SEC/100);
}while(ptcb = ptcb->OSTCBNext);
printf("\r\nCPU_UseAge:%%%d", OSCPUUsage);
printf("\r\n\r\n\r\n");
}