嵌入式学习小组
直播中

萧治维

7年用户 194经验值
私信 关注

如何统计uCOSIII空闲任务的CPU占用率?

原子哥F4的例程里面有这么一段
void  App_OS_IdleTaskHook (void)
{
        static int num;
        num++;
        if(num%50000==0)
        {
                printf("Idle Task Running 50000 times!rn");
        }
}
我没搞懂是怎么运行的,我想统计每个任务的CPU占用率。网上找不到相关的资料,求助大家

回帖(8)

陈杰

2019-10-11 07:30:35
使用OS的统计任务,不过用printf()很占时间,会不准
举报

何壮梦

2019-10-11 07:37:00
是的,不知道怎么统计并且计算
举报

王赛

2019-10-11 08:05:32
CPU_STK_SIZE size,used;
  OS_CPU_USAGE usage;
          used = StatTCB.StkUsed;
          size = StatTCB.StkSize;
          usage = StatTCB.CPUUsageMax;       
举报

王峰

2019-10-11 08:18:35
这样子就可以查看任务内存使用率了
//主任务的任务函数
void main_task(void *p_arg)
{
    OS_ERR err;
    CPU_STK_SIZE free,used;
    (void)p_arg;
       
//        printf("**main_task 任务开始:rn");       
        printf("**main_task 任务优先级:%drn",MAIN_TASK_PRIO);
    while(DEF_TRUE)
    {
            u8 buf[30];         
            OSTaskStkChk (&Main_TaskTCB,&free,&used,&err);
                /*串口打印任务内存使用*/
            //printf("SystemDatasBroadcast  used/free:%d/%d  usage:%%%drn",used,free,(used*100)/(used+free));
                /*液晶打印任务内存使用*/
              sprintf((char*)buf,"main_task:SIZE %d.used %d.free %d.usage %%%d ",MAIN_STK_SIZE,used,free,(used*100)/(used+free));                                               
              LCD_ShowString(30,390,400,16,16,buf);
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分