查看uCOS-II的CPU使用率
代码模板:
void main(void)
{
OSInit();
/* 安装uCOS-II的任务切换向量 */
/* 创建用户起始任务TaskStart */
OSStart();
} void TaskStart(void * pdata)
{
/* 安装并启动uCOS-II的时钟节拍 */
OSStatInit();
/* 创建用户应用程序任务 */
for( ; ;){ }
}
嵌入式实时操作系统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",,*);
GUI_DispFloat(OSVersion()*0.01,); OSInit();
OSTaskCreate(Task1_Start, (void *), &task1_start_stk[TASK1_START_STKSIZE-], TASK1_START_PRIO);
OSStart();
return ;
} 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 *), &task2_stk[TASK2_STKSIZE-], TASK2_PRIO);
OSTaskCreate(Task3_GUI, (void *),&task3_gui_stk[TASK3_GUI_STKSIZE-], TASK3_GUI_PRIO);
OSTaskDel(OS_PRIO_SELF);
} void Task3_GUI(void *p_arg)
{
p_arg = p_arg;
GUI_SetFont(&GUI_Font13_ASCII); while()
{
GUI_DispStringAt("CPU Usage: ",,*);
GUI_DispDec(OSCPUUsage,);
GUI_DispString("%");
GUI_X_ExecIdle();
}
}
参考资料:《 嵌入式实时操作系统uCOS-II(第二版)》
查看uCOS-II的CPU使用率的更多相关文章
- java cpu 使用率100%
--宝典开始 top :查看 进程 ,选CPU使用率高的 获取进程ID,pid top -Hp pid:查看线程,选CPU使用率高的 获取线程ID,threadid printf "%X\n ...
- 性能分析(5)- 软中断导致 CPU 使用率过高的案例
性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 软中断基本原理,可参考这篇博客:https: ...
- Linux Shell查看磁盘分区,内存使用,CPU使用率
Linux Shell查看磁盘分区,内存使用,CPU使用率 #!/bin/bash #disk_used_rate Location=/dev/xvdb Disk_Used_Rate=$(df -h ...
- 查看线程linux cpu使用率
Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算 转 http://www.cnblogs.com/lidabo/p/4738113.html目录(?)[-] proc文件系统 p ...
- [转] 查看CPU使用率 top命令详解
一 top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前 台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示 ...
- (笔记)Linux下查看CPU使用率的命令
1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...
- Linux下查看CPU使用率 --- top命令的使用
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...
- 【转载】使用宝塔Linux面板功能查看服务器CPU使用率
运维过阿里云服务器或者腾讯云服务器的运维人员都知道,针对耗资源以及高并发的应用,很多时候我们需要关注云服务器的资源利用率情况,如最近一段时间内CPU的使用率.内存占用率等情况信息.阿里云和腾讯云官方后 ...
- Linux系统查看CPU使用率命令
在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况.而监控CPU的性能一般包括以下3点:运行队列.CPU使用率和上下文切换. 1.top 这个命令很常用,在第三行有显示CP ...
随机推荐
- js重写原型对象
首先看两段很相似的代码: 1. function Person(){} Person.prototype = { constructor:Person, name:"Nic", a ...
- Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
1.kill掉列出的进程: [root@localhost mysql]# ps -a | grep -i mysql pts/ :: mysqld_safe pts/ :: mysqld <d ...
- 关于properties文件在项目中的使用
这个是当时在学习JDBC的时候老师给讲的.web项目中把一些常用的用户名和密码都填写到一个对应的配置文件中,这样每次修改密码或者用户名的时候就可以直接修改这个配置文件了,不用动源码. 老师讲了两种读取 ...
- 【转】傅盛:怎样做一个创业公司CEO?
摘要 : 傅盛High聊会,泉灵姐姐给的命题作文.怎样做一个创业公司CEO,核心还是思维模式. 这次傅盛High聊会,泉灵姐姐给我的命题作文.创业要如何开始,本质还是思维模式.首先学会把一个开放式问题 ...
- 20160509-hibernate-集合映射
集合映射 集合映射(set, list, array,bag, map) <set name=”employees” > <key column=”depart_id”/> & ...
- 20160505-hibernate入门2
基本概念和CURD 开发流程 1由Domain object -> mapping->db.(官方推荐) 2由DB开始,用工具生成mapping和Domain object.(使用较多) ...
- SharePoint 学习记事(一)
记录背景: 随着公司业务的拓展,为拿到更多的项目,让原本不太信任我们的美国大佬相信我们的实力,让在美国的销售发挥他的能力,所以公司在13年下半年筹划收购了一家美国本土的公司.大约400人的规模,这个公 ...
- 免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大
https://www.freehao123.com/web-ftp/ 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的 ...
- 深入了解webkit内核第一篇:JavaScript引擎深度解析
看到HorkeyChen写的文章<[WebKit] JavaScriptCore解析--基础篇(三)从脚本代码到JIT编译的代码实现>,写的很好,深受启发.想补充一些Horkey没有写到的 ...
- ios code style
注释 建议使用VVDocumenter插件 多行注释 格式: /** 注释内容 */ 单行注释 格式: ///在对文件.类.函数进行注释时推荐使用多行注释,在函数体内对代码块进行注释时,使用单行注释 ...