1.确定 OS_TASK_STAT_EN 为1 。
OS_TASK_STAT_EN 在 os_cfg.h 文件中。
2. main()主函数中确保首先调用了函数OSInit()。
因为OSInit()会调用 OS_InitTaskStat()函数。
OS_InitTaskStat(),用创建统计任务,它是我们所需要的。
3.在一个用户任务中设置玩Systick后,手动调用 OSStatInit();
因为OSStatInit()函数,负责初始化统计任务的各计数值。
4.将mcu 使用率值OSCPUUsage 串口打印输出或者显示输出等。
OSCPUUsage是一个全局 unsigned char 变量,以百分比形式显示,CPU使用率。
以下举例:
1.确定 OS_TASK_STAT_EN 为1 。这个在文件os_cfg.h中查看一下就可以,不是1就设置为1。
2.main()主函数中确保首先调用了函数OSInit()。
OSInit()会调用 OS_InitTaskStat()函数。
可以进入OS_InitTaskStat()函数查看如何创建统计任务的。
3.在一个用户任务中设置玩Systick后,手动调用 OSStatInit();
因为OSStatInit()函数,负责初始化统计任务的各计数值。
void main(void)
{
/** 1. Initialize "uC/OS-II, The Real-Time Kernel" */
OSInit(); //
/** 2. Create task */
u32Result = OSTaskCreateExt(UserTask, NULL, \
&gaTaskStkInit[TASK_STK_SIZE_INIT-1], TASK_PRI_INIT, TASK_PRI_INIT, \
gaTaskStkInit, TASK_STK_SIZE_INIT, NULL, OS_TASK_OPT_STK_CLR);
__enable_irq();
/** 3. Start multitasking (i.e. give control to uC/OS-II) */
OSStart();
}
static void UserTask(void* pArg)
{
int8u u8Err = B_ERR;
RCC_ClocksTypeDef RCC_Clocks; SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000); pArg = pArg;
//统计任务初始化
OSStatInit();
}
4.将mcu 使用率值OSCPUUsage 串口打印输出或者显示输出等
这个就不举例说明了。
具体原理可以参见:OSStatInit(); OS_InitTaskStat();函数
以及参见:张连聘老师的讲解 http://blog.youkuaiyun.com/zhanglianpin/article/details/6326752