RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

2025-10-14 12:58:11

1、编写统计任务堆栈使用/剩余大小及使用率的函数。

 

#define OS_TASK_STAT_EN           1u   /*     Enable (1) or Disable(0) the statistics task             */

#define OS_TMR_EN                 1u   /* Enable (1) or Disable (0) code generation for TIMERS         */

/**********************************************************************************************************************************************

 * 函数名 : vAppTask_DebugInfo

 * 描  述 : 应用任务调试信息  

 **********************************************************************************************************************************************/

static void vAppTask_DebugInfo(void)

{       

OS_TCB * ptcb = &OSTCBTbl[0];//Table TCB

OS_STK_DATA stkDat;

printf("************************************ App Task Debug Info ***********************************\r\n");

printf("  Prio     Used    Free    Per      TaskName\r\n");

while (ptcb != NULL)

{

OSTaskStkChk(ptcb->OSTCBPrio, &stkDat);//Check task stack

printf("   %2d    %5d    %5d    %02d%%     %s\r\n", ptcb->OSTCBPrio, stkDat.OSUsed, stkDat.OSFree, (stkDat.OSUsed * 100)/(stkDat.OSUsed + stkDat.OSFree), ptcb->OSTCBTaskName);

ptcb = ptcb->OSTCBPrev;//Previous TCB list

}

printf("\r\n");

}

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

2、使能设置任务名的宏定义OS_TASK_NAME_EN

#define OS_TASK_NAME_EN 1u//Enable task names

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

3、 设置任务名称OSTaskNameSet()

void OSTaskNameSet(INT8U   prio, INT8U  *pname, INT8U  *perr)

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

4、统计任务堆栈使用/剩余大小及使用率效打印效果如下。

************************************ App Task Debug Info ***********************************

  Prio     Used    Free    Per      TaskName

   63       15      113    11%     uC/OS-II Idle

   62       21      107    16%     uC/OS-II Stat

    0       25      103    19%     uC/OS-II Tmr

    5       66       14    82%     Start

   10       66       34    66%     USART3

    9       27       73    27%     USART2

   11       27       73    27%     IWDG

   12       52       48    52%     Queue

    3       27       73    27%     Debug

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

5、UCOSII内置任务说明。

uC/OS-II Idle : 为UCOSII空闲任务

uC/OS-II Stat : 为UCOSII统计任务

uC/OS-II Tmr : 为UCOSII软件定时器任务

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

6、补充说明

1. uC/OS-II Idle为必须任务,不可屏蔽。

2.  uC/OS-II Stat和uC/OS-II Tmr为可屏蔽任务,可通过相应的宏使能。

3. OS_TMR_EN为使能uC/OS-II Tmr任务的宏。

4. OS_TASK_STAT_EN为使能uC/OS-II Stat任务的宏。

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

RTOS UCOSII统计任务堆栈使用/剩余大小及使用率

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢