查看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 ...
 
随机推荐
- 网页媒体播放利器 - JW Player使用心得
			
序言 前段时间在做一个网站项目,要求能在线播放视频.音乐,这个以前还真没接触过.恰好今天在坛子里闲逛时,发现有同志对这方面也感兴趣,遂把这些整理了下,同时自己也可以复习下. 播放器需要满足以下需求: ...
 - Maven学习小结(二 项目构建过程)
			
1.创建Maven项目 1.1 创建Maven项目的约定目录结构 1.2 编辑pom.xml <project xmlns="http://maven.apache.org/POM/4 ...
 - 将CGPoint、CGSize、CGRect等放进数组的方法
			
在oc中,数组中只能存放NSObject类型的数据,所以如果将CGPoint.CGSize.CGRect这些数据存到数组中,我们需要将他们转换为对象类型才可以, 可以借助NSValue,它是用来将基本 ...
 - Objective-C /iphone开发基础:分类(category,又称类别)
			
在c++中我们可以多继承来实现代码复用和封装使程序更加简练.在objective-c中只能单继承,不能多继承,那么除了协议protocol之外,我们可以实现类似多继承的一个方法就是,分类(catego ...
 - 基于JQuery实现相同内容合并单元格[转]
			
<script type="text/javascript"> jQuery.fn.rowspan = function(colIdx) { //封装的一个JQuery ...
 - Android开发了解——ODEX
			
ODEX是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个·dex文件单独存放,原APK中的classes.dex文件会保留.这 ...
 - PHP中foreach循环详解
			
首先要说的是,其实我对foreach循环的用法并不是很精通,说详解,其实也只是我自己的理解,希望对你能有点帮助 . 先来看一下foreach的语法: foreach ($array as $key=& ...
 - dedecms 首页分页功能
			
1.需要引入 <script language="javascript" type="text/javascript" src="{dede:g ...
 - JAXB - Annotations, Top-level Elements: XmlRootElement
			
A class that describes an XML element that is to be a top-level element, i.e., one that can function ...
 - 过滤网页中HTML代码的ASP函数
			
Function LoseHtml(ContentStr) Dim ClsTempLoseStr,regEx ClsTempLoseStr = Cstr(ContentStr) Set regEx = ...