从第二章开始啦:

程序控制块(TCB)  重要概念  相当于对应程序块的学生证,学号,,,

上面的图是一个简单的程序控制块,还会有复杂的程序控制块,也许是嵌套的两级的:

链表就相当于老师手中的花名册,,把学号一个一个排起来

位图有很多作用,,,相当于座位,座位上没有人就是0,座位上有人就是1,,,,,,也就是用位图可以查询某个外设是否被占用.

相当于考勤表..

////////////////////////////////////////////

第三章

任务的组成:  任务程序代码; 任务堆栈 ; 任务控制块;

任务程序代码,就是函数,是任务的执行部分.

任务堆栈,保存任务的运行环境.

任务控制块,里面包含了任务的属性,是任务的'学生号'

该看一下微机原理,补一下pc是什么??

任务的状态:

OS_ENTER_CRITICAL()  关中断  ,是宏

OS_EXIT_CRITICAL()      开中断 ,是一个宏定义

OSTaskCreate() :是μC/OS提供用来创建任务的函数

OSStart() :启动μC/OS的函数 , 系统启动后,任务就由操作系统来管理和调度了.

两个系统任务: 空闲任务,统计任务

空闲任务 OSTaskIdle()  必须有,而且不能用程序删除

//看到了任务堆栈的建立

OS_CPU.H  中专门定义了一个数据类型OS_STK :

typedef unsigned int OS_STK;       //该类型长度为16位

这样,在定义任务堆栈的栈区时,只要定义一个OS_STK类型的数组即可,

#define TASK_STK_SIZE 512 . //定义堆栈的长度

OS STK TaskStk[TASK_STK_SIZE]; //定义一个数组来作为任务堆栈

创建任务函数原型

INT8U OSTaskCreate(

void (*task)(void *pd), //指向任务的指针

void *pdata, //传递给任务的参数

OS_STK * ptos,//任务堆栈栈顶的指针

INT8U prio //指定任务优先级别的参数

);

例: 创建一个任务,任务堆栈长度为128字节,优先级为20,任务参数pdata的实参为MyTaskAgu

答:

#define MyTaskStkN  64

OS_STK MyTaskStk[MyTaskStkN]

void main (void)

{

......

OSTaskCreate(

MyTask, //任务的指针

&MyTaskAgu,//传递给任务的参数

&MyTaskStk[MyTaskStkN-1], //任务堆栈栈顶地址

20 //任务的优先级别

)

}

OS_STK_GROWTH  //用来决定堆栈的增长方向.

STM32的栈,是向下生长的.事实上,一般CPU的栈增长方向,都是向下的.

也就是越增长,越大

那么stm32单片机应该把这个参数定为0

3.2.2

任务堆栈

任务堆栈初始化函数:

OS_STK *OSTaskStkInit (

void (*task)(void *pd),

void *pdato,

OS_STK *ptos

INT16U opt

) ;

上面函数主要是有任务创建函数来调用:OSTaskCreate()

3.3 任务控制块及其链表

任务控制块是任务的学生证

学生证上面记录了一些信息: 优先级别;任务的堆栈指针;任务的当前状态;

任务控制块结构定义如下:

Task Control Block   (TCB)

//以上黑体,表示常用的

SOTCBStat : 用来存放任务的当前状态,该变量的值可以为:

任哲<<μC/OS>>的更多相关文章

  1. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  2. Node.js:OS模块

    os模块,可以用来获取操作系统相关的信息和机器物理信息,例如操作系统平台,内核,cpu架构,内存,cpu,网卡等信息. 使用如下所示: const os = require('os'); var de ...

  3. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  4. Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)

    Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...

  5. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  6. java 利用ManagementFactory获取jvm,os的一些信息--转

    原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...

  7. 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。

    写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...

  8. Mac OS X 上编写 ASP.NET vNext (二) IDE配置

    上一篇中介绍了如何在OS X上搭建.Net运行时.不过光有运行时还不够,还需要有一个好用的IDE,有了IDE的支持,OS X上的开发才称为可能. 和上篇类似,这里先列举出具体步骤,个人可以根据自己的情 ...

  9. 在Mac OS X上安装ASP.NET 5(译文)

    ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...

随机推荐

  1. C++标准库概述

    一.C++标准库的主要组件: 1.标准C库 2.I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O) 3.st ...

  2. 【基础篇】Android MediaPlayer基本使用方式

    使用MediaPlayer播放音频或者视频的最简单例子: JAVA代码部分: public class MediaPlayerStudy extends Activity { private Butt ...

  3. Kinect 开发 —— 语音识别(下)

    使用定向麦克风进行波束追踪 (Beam Tracking for a Directional Microphone) 可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam ...

  4. c# for 和 foreach

    1给定长度 不需要计算长度的 for比foreach循环效率高 2 在不确定长度 或者计算长度有性能损耗的时候 用foreach比较方便 2336 循环语句是编程的基本语句,在C#中除了沿用C语言的循 ...

  5. mkfs---创建Linux文件系统

    [root@xiaolizi ~]# mkfsmkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs ...

  6. BZOJ3697: 采药人的路径(点分治)

    Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材.采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的.采药人每天都要进行采药活动 ...

  7. BZOJ2118: 墨墨的等式(最短路构造/同余最短路)

    Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...

  8. Spring MVC框架实例

    Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架还是 ...

  9. ShopEx 中规格属性添加时,自己主动计算其相应的销售价格,同一时候注意模板中的变量间的计算

    在ShopEx中,添加产品的规格时,如颜色.尺寸.是否送货等配置信息,默认情况下,这些内容是须要手动计算的,若仅仅有几个属性值还easy计算,假设每个属性值比較多,通过手动计算将是一个灰常巨大的工作量 ...

  10. IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以

    IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以. Android的WebView可以支持外链样式,js文件:IOS则需要改为内嵌样式和JS文件.