2.1 任务的基本概念

任务种类:

1.用户任务:解决应用问题。(由应用程序设计者编写)

 

2.系统任务:为应用程序提供某种服务。(由系统提供)

 

任务组成:

1.任务控制块:保存任务属性。

2.任务堆栈:保存任务工作环境。

3.任务程序代码

 

 

任务链表:多个任务链接而成。


 

 

 

2.1.1 任务的状态

 

1.睡眠状态:任务没有被配备任务控制块或剥夺了任务控制块时的状态。

2.就绪状态:任务被配备了任务控制块且在任务就绪表中进行了登记的状态。

3.运行状态:任何时刻只能有一个任务处于运行状态。

4.等待状态:之前在运行的任务,现在需要等待一段时间 或 需要等待一个事件发生 再运行时的状态。

5.中断服务状态:正在运行的任务响应中断申请去执行中断服务程序的状态。

 

任务状态转换图:

 

 

 

2.1.2 用户任务代码的一般结构

 

1. 用户任务代码的一般结构

  μC/OS-II任务的代码结构是一个带有临界段的无限循环。(在运行OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL()来控制任务何时响应中断,何时屏蔽中断。)

 

2. 用户应用程序的结构

  

    void MyTask1(void *pdata) //定义用户任务1

    {

    for(;;)

{

......

}

}

 

void MyTask(void * pdata) //定义用户任务2

{

for(;;)

{

......

}

}

 

void MyTask3(void * pdata) //定义用户任务3

{

for(;;)

{

......

}

}

 

void main()

{

......

OSInit(); //初始化μC/OS-II

......

OSTaskCreate(MyTask1,......); //创建用户任务1

OSTaskCreate(MyTask2,......); //创建用户任务2

OSTaskCreate(MyTask3,......); //创建用户任务3

......

OSStart(); //启动任务

......

}

 

主函数main()只负责创建和启动用户任务,而由操作系统调度运行用户任务。

 

2.1.3  系统任务

μC/OS-II定义了两个为应用程序服务的系统任务:空闲任务(每个应用程序必须使用) 和 统计任务(每秒计算一次CPU在单位时间内被使用的时间,把计算结果以百分比的形式存放在变量OSC-PUUsage中。  应用程序根据实际需要选择使用)。

 

1. 空闲任务

 

 

 

2. 统计任务

 

  要使用统计任务需要:

  1.把定义在系统头文件OS_CFG.H中的系统配置常数OS_TASK_STAT_EN设置为1。

      2.在创建统计任务之前调用函数OSStatInit()对统计任务进行初始化。

 

2.1.4 任务的优先权及优先级别


例:若应用程序的优先级别为28个,则该应用程序最多安排26个任务。(优先级26自动赋给统计任务,优先级27自动赋给空闲任务)

任务——μ/COS-II读书笔记相关推荐

  1. 《演说之禅》I amp; II 读书笔记

    最近入手了<演说之禅>与<演说之禅设计篇>.两本非常贵的书,感觉还是非常不错的.虽然个人认为不如之前看的那本<给大家看得设计书>,不过还是值得一读. 两本书一起弄读 ...

  2. bootstrap_blue_print_volume ii 读书笔记

    why reuse the wheel each time 1.使用按钮,在鼠标悬停时进行细微的更改(可以稍微调整下颜色,将颜色变暗或者冲击色),并且给你的主色调不同的颜色. 2.通过把重要的链接做成 ...

  3. Java 核心技术卷 II(第 8 版) – 读书笔记 – 第 1 章(下)

    22.一旦获得了一个 Charset,就可以在 Java 的 Unicode 和指定的编码格式之间进行转化,下面以 GBK 和 Unicode 之间做为例子. 从 Unicode 到 GBK: imp ...

  4. 《Master Opencv...读书笔记》非刚性人脸跟踪 II

    上一篇博文中,我们了解了系统的功能和模块,明确了需要采集哪些类型的样本点及利用类的序列化的保存方式.这次将介绍几何约束模块,通过统计形态分析法(Statistical Shape Analysis, ...

  5. Maltab在数学建模中的应用(第二版)——读书笔记上

    Maltab在数学建模中的应用(第二版)--读书笔记上 1.MATLAB与数据文件的交互 1.1数据拟合 1.2数据拟合实例 1.3数据可视化 1.4层次分析法 2.规划问题的MATLAB求解(多约束 ...

  6. 《javascript面向对象编程指南》读书笔记

    <javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...

  7. μC-/OS II(一) PC编译环境的搭建

    这个系列博文是关于对<嵌入式实时操作系统 μC-/OS II>(第二版)的学习笔记 μC-/OS II (一)  PC编译器环境的搭建 1.关于编译器 采用Borland C++ 4.5作 ...

  8. 考试全程指导读书笔记1 -Chap1 信息系统基础

    考试全程指导读书笔记 1 Chap1 信息系统基础 1.1   霍尔提出的系统方法的三维结构体系:霍尔三维结构 逻辑维.时间维.知识维组成的立体空间结构: 逻辑维:7个步骤:明确问题.系统指标设计.系 ...

  9. 《勋伯格和声学》读书笔记(八):转调

    前言 本文包含<勋伯格和声学>第六章--转调的相关读书笔记.如果说上一篇文章中所讨论的终止式的目的是明确一个调性,将有可能与相邻调式产生混淆的其他可能调式排除在外,那么转调的过程就需要首先 ...

  10. 《python 程序设计》读书笔记

    <python 程序设计>读书笔记 笔者对于csdn博客的运用还是不太熟练,希望大家能够见谅.以后会不断提升写作的手法.这篇博客是我在学习python程序设计时候的笔记.我也是选择学习了大 ...

最新文章

  1. html圆圈里面问号,html,css实现问号提示信息
  2. mysql输入select now()_mysql 中select now(); 是怎么执行的?没有指定FROM tablename?
  3. 打包后放在服务器上二级目录找不到解决办法
  4. 腾讯云Centos升级python2到python3
  5. 华为交换机RRPP配置实验
  6. 6款程序员不得不爱的bootstrap模板
  7. 收发邮件服务器错误,邮件系统收发邮件报错汇总——错误代码550
  8. python的else_Python3 if...elseif...else语句
  9. JavaWeb中的问题 ---- Servlet和Jsp
  10. iOS导航栏的正确隐藏方式
  11. 保姆教程 | YOLOv5在建筑工地中安全帽佩戴检测的应用
  12. 2017年的博客之路开始---下一个十年
  13. 一个人的“野蛮”战争——周鸿祎奋斗记
  14. 软件工程大作业——设计阶段
  15. 程序通过命令行获取操作系统名称+版本+CPU名称等各种信息
  16. html判断符号,html js 格式验证标点符号
  17. data augment
  18. chrome inspect联调android手机webview和web h5遇坑
  19. OIM Training Lab 1
  20. js的animate函数

热门文章

  1. 七夕|情人节情书指南
  2. 一文带你快速读懂.NET CLI
  3. 【经典】5种IO模型 | IO多路复用
  4. Django 中间件
  5. 样条表示---样条表示之间的转换
  6. kubernetes入门(03)kubernetes的基本概念
  7. openlayer 3 在layer上添加feature
  8. Linux 跟踪进程对CPU的占用情况,对内存的占用情况
  9. mysql 联合索引详解
  10. corosync+pacemaker+crm+nfs