ucosII的CPU使用率查看即OSStatInit()函数的使用方法
2017-07-27 09:47
876 查看
查看uCOS-II的CPU使用率
代码模板:1 void main(void) 2 { 3 OSInit(); 4 /* 安装uCOS-II的任务切换向量 */ 5 /* 创建用户起始任务TaskStart */ 6 OSStart(); 7 } 8 9 void TaskStart(void * pdata) 10 { 11 /* 安装并启动uCOS-II的时钟节拍 */ 12 OSStatInit(); 13 /* 创建用户应用程序任务 */ 14 for( ; ;){ 15 16 } 17 }
嵌入式实时操作系统uCOS-II(第二版)P99页上给我们展示了一个应用模板,这里我想强调几点。
<1> 在使用查看CPU使用率功能之前,要将OS_TASK_STAT_EN(在OS_CFG.h)设置为1,也就是使用这个功能。此时uCOS-II在调用函数OSInit()初始化的时候,不仅要创建必备的空闲任务OS_TaskIdle(),还会创建另外一个系统任务OS_TaskStat()。
<2> 在使用上述模板的时候,要严格按照模板中代码出现的先后顺序进行移植编写,不可更改顺序,否则会出现一些列错误。比如说本来应在第13行创建一个应用程序任务,假设它的优先级比启动任务的还要高。但是用户却将其提前到第12行之前,就会导致在创建这个应用程序的时候剥夺了TaskStart()的CPU占有权,导致OSStatInit()不能正常初始化。OSStatInit()在执行的时候,只允许系统有三个任务TaskStart()、OS_TaskStat()、OS_TaskIdle()。
<3> uCOS-II的系统时钟是在TaskStart()中才正式开始跳动的,不要在main()函数中启动系统时钟。之所以这样做,是因为“用户并不希望在多任务还没有开始时就接收到时钟节拍中断”。
笔者在STM32上做的实例:
int main(void) { LCD_Ili9341_PortInit(); GUI_Init(); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringAt("uC/OS Version: V",48,1*24); GUI_DispFloat(OSVersion()*0.01,4); OSInit(); OSTaskCreate(Task1_Start, (void *)0, &task1_start_stk[TASK1_START_STKSIZE-1], TASK1_START_PRIO); OSStart(); return 0; } void Task1_Start(void *p_arg) { OS_CPU_SR cpu_sr; p_arg = p_arg; OS_ENTER_CRITICAL(); SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC); OS_EXIT_CRITICAL(); OSStatInit(); OSTaskCreate(Task2, (void *)0, &task2_stk[TASK2_STKSIZE-1], TASK2_PRIO); OSTaskCreate(Task3_GUI, (void *)0,&task3_gui_stk[TASK3_GUI_STKSIZE-1], TASK3_GUI_PRIO); OSTaskDel(OS_PRIO_SELF); } void Task3_GUI(void *p_arg) { p_arg = p_arg; GUI_SetFont(&GUI_Font13_ASCII); while(1) { GUI_DispStringAt("CPU Usage: ",216,8*24); GUI_DispDec(OSCPUUsage,2); GUI_DispString("%"); GUI_X_ExecIdle(); } }
参考资料:《 嵌入式实时操作系统uCOS-II(第二版)》
相关文章推荐
- os、os.path 模块中关于文件、目录常用的函数使用方法(python)
- 查看VC++生成的dll的方法或函数名[dumpbin使用方法]
- python基础:os模块中关于文件/目录常用的函数使用方法
- os、os.path 模块中关于文件、目录常用的函数使用方法
- os、os.path 模块中关于文件、目录常用的函数使用方法
- os、os.path 模块中关于文件、目录常用的函数使用方法
- hive 查找函数并查看函数使用方法
- os, os.path模块中关于文件/目录常用的函数使用方法
- os、os.path模块中关于文件、目录常用的函数使用方法
- os模块中关于文件/目录常用的函数使用方法
- os、os.path 模块中关于文件、目录常用的函数使用方法
- os、os.path 模块中关于文件、目录常用的函数使用方法
- hive 查找函数并查看函数使用方法
- sql server 创建table表 及添加各种约束 查看约束 删除约束 新增表的字段 规则及规则使用方法及应用到表中 时间函数的类型
- 编写一个程序,考察exit函数的使用方法,在程序尚未运行到最后时使用exit函数退出,查看后面的程序
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 使用DataReader在dataGridView中查看表结构和全部记录的方法
- 子类重载父类的非虚成员函数是否对从父类中继承且使用该成员函数的方法的行为产生影响
- Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法(转载)
- SQL Server 2005 Reporting Services 使用C#类库中的函数方法