代码模板:

 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使用率的更多相关文章

  1. java cpu 使用率100%

    --宝典开始 top :查看 进程 ,选CPU使用率高的 获取进程ID,pid top -Hp pid:查看线程,选CPU使用率高的 获取线程ID,threadid printf "%X\n ...

  2. 性能分析(5)- 软中断导致 CPU 使用率过高的案例

    性能分析小案例系列,可以通过下面链接查看哦 https://www.cnblogs.com/poloyy/category/1814570.html 前言 软中断基本原理,可参考这篇博客:https: ...

  3. Linux Shell查看磁盘分区,内存使用,CPU使用率

    Linux Shell查看磁盘分区,内存使用,CPU使用率 #!/bin/bash #disk_used_rate Location=/dev/xvdb Disk_Used_Rate=$(df -h ...

  4. 查看线程linux cpu使用率

    Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算 转 http://www.cnblogs.com/lidabo/p/4738113.html目录(?)[-] proc文件系统 p ...

  5. [转] 查看CPU使用率 top命令详解

    一 top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前 台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示 ...

  6. (笔记)Linux下查看CPU使用率的命令

    1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...

  7. Linux下查看CPU使用率 --- top命令的使用

    在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会 ...

  8. 【转载】使用宝塔Linux面板功能查看服务器CPU使用率

    运维过阿里云服务器或者腾讯云服务器的运维人员都知道,针对耗资源以及高并发的应用,很多时候我们需要关注云服务器的资源利用率情况,如最近一段时间内CPU的使用率.内存占用率等情况信息.阿里云和腾讯云官方后 ...

  9. Linux系统查看CPU使用率命令

    在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况.而监控CPU的性能一般包括以下3点:运行队列.CPU使用率和上下文切换. 1.top 这个命令很常用,在第三行有显示CP ...

随机推荐

  1. java_Cookies_1_商品浏览历史记录servlet1

    public class CookiesServlet1 extends HttpServlet { public void doGet(HttpServletRequest request, Htt ...

  2. ie7兼容性 绝对定位元素之间的遮盖问题

    今天在调试ie7兼容性问题的时候,遇到了一个棘手的问题,解决了一天无果,晚上看到一位大神写的心得,最终解决. 网址:http://www.jb51.net/css/148606.html#commen ...

  3. 关于Eclipse中的快捷键占用的解决.

    刚进公司用的之前离职员工的电脑,打开Eclipse经常用的一个alt+/ 内容提示快捷键就是不好使. 让同事帮忙之后才发现原因. 在eclipse中快捷键设置是在  windows---->pr ...

  4. php中的匿名函数(Anonymous functions)和闭包函数(closures)

    一:匿名函数 (在php5.3.0 或以上才能使用) php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 允许指定一个没有名称的函数.最常用的就是回调函 ...

  5. hdu 1040 As Easy As A+B

    As Easy As A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  6. ###Maintainable C++

    点击查看Evernote原文. #@author: gr #@date: 2014-08-15 #@email: forgerui@gmail.com 记录一些标准规范.让自己的编码更可读,更可维护. ...

  7. Linux 网络相关命令

    1.修改ip,dns相关:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.ifconfig 查找ip,mac地址 3.重启网络:sudo ser ...

  8. 移动前端开发之viewport的深入理解(转载)

    本文为转载文章,原文网址:http://www.cnblogs.com/2050/p/3877280.html 在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有 ...

  9. Java线程间通信--生产者消费者

    class ProducerConsumerDemo {    public static void main(String[] args)     {        Resource r = new ...

  10. 02_线程的创建和启动_继承Thread方式

    [简述] java使用Thread类代表线程,所有的线程都必须是Thread或者其子类的实例. 每个线程的任务就是完成一定的任务,实际上就是执行一段程序流. [创建并启动多线程的步骤(集成Thread ...