10.6-uC/OS-III内部任务(统计任务 OS_StatTask())
1.这个任务能够统计总的CPU使用率(0到100%),每个任务的CPU使用率( 0到100%),每个任务的堆栈使用量。
2.统计任务在uC/OS-III中是可选的,当设置OS_CFG.H中的OS_CFG_STAT_TASK_EN为1时,统计任务的代码会被包含在程序中。当然, 统计任务的优先级和它的任务堆栈大小在OS_CFG_APP.H中配置。
3.最好在main()中只创建的一个任务,通常叫做AppTaskStat(),当使能了统计任务时,就必须在AppTaskStat任务中首先调用OSStatTaskCPUUsageInit()。如列表5-5所示。在调用OSStart()之前,用户的启动代码只能创建一个任务,而是由这个任务创建其它任务。
( 1). CPU进入main()函数中。
( 2) .main()函数调用OSInit()初始化uC/OS-III。假定在OS_CFG_APP.H中设置OS_CFG_STAT_TASK_EN为1, 使能统计任务。通过uC/OS-III返回的错误代号检测系统初始化是否成功。
( 3).创建一个叫做AppTaskStart()的任务。创建这个任务的时候,给它一个相当高的优先级(不要用优先级0,因为这是为uC/OS-III保留的)。
uC/OS-III允许用户在调用OSStart()之前创建任意个任务。然而,当用到统计任务统计CPU的使用率时,调用OSStart()之前只能创建一个任务。
( 4).调用OSStart(),让uC/OS-III开始运行优先级最高的任务,根据例子,这个任务是AppTaskStart()。在这个时候,已经有五个任务被创建了: OS_IdleTask(), OS_TickTask(), OS_StatTask(),OS_TaskTmr(), AppTaskStart()。
( 5).这个任务应该先设置和开启时基中断,初始化用于时基时钟的硬件定时器, 设置其中断的速率。( 编译时设置OS_CFG_APP.H中的OS_CFG_STAT_TASK_RATE)。另外, Micrium提供的例子工程中包含了基本的板级支持包BSP。 BSP初始化了CPU很多方面的也包括uC/OS-III需要的周期时间源。如果需要,用户可以在开启任务中调用BSP_Init()初始化BSP服务。
( 6). 调用OSStatTaskCPUUsageInit()。 当没有其它应用任务运行时,经过1/OS_CFG_STAT_TASK_RATE秒后OSStatTaskCtr的计数值就是OSStatTaskCtr的最大值,它意味着CPU的空闲时的工作速率。
( 7).然后在AppTaskStart()创建其它的应用任务。