从第二章开始啦:

程序控制块(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. 常用的130个vim命令

    最近VIM用的也越来越多了...因为确实在慢慢的把win下的编辑习惯转成unix下的编辑习惯..._vimrc也在不断的完善中先贴一下平时在VIM中使用中的命令...有很多也是我没有掌握的 (估计也是 ...

  2. 解决配置Ubuntu中vnc远程显示灰屏

    解决配置Ubuntu中vnc远程显示灰屏a. 缺失图形化工具b.  ~/.vnc/xstartup 权限不对1. Ubuntu 16.04 安装 VNC 及 Mate 桌面环境https://www. ...

  3. 1.20 Python基础知识 - python常用模块-1

    一.time和datetime 1.time模块 1)time.process_time() >>> import time >>> time.process_ti ...

  4. BZOJ2738: 矩阵乘法(整体二分)

    Description 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. Input 第一行两个数N,Q,表示矩阵大小和询问组数: 接下来N行N列一共N*N个数,表示这个矩阵: ...

  5. codeforces 204E. Little Elephant and Strings(广义后缀自动机,Parent树)

    传送门在这里. 大意: 给一堆字符串,询问每个字符串有多少子串在所有字符串中出现K次以上. 解题思路: 这种子串问题一定要见后缀自动机Parent树Dfs序统计出现次数都是套路了吧. 这道题统计子串个 ...

  6. 解决ListCtrl控件第一列文字不能居中显示的问题/修改网格线

    把CListCtrl设置为Report风格,但是插入第一列的时候(InsertColumn)的时候会发现文字不能居中.即使使用了LVCFMT_CENTER,其他列都可以正常居中,但第一列仍然靠左显示. ...

  7. Android RecyclerView And CardView

    Google I/O 2014大会公布Android L系统,还有Material Design全新的设计风格.而Material Design卡片式的设计.Google Play应用商店和G+ AP ...

  8. HDU 1848(sg博弈) Fibonacci again and again

    Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  9. 不安装谷歌市场,下载谷歌市场中的APK

    不安装谷歌市场,下载谷歌市场中的APK GooglePlayStore 是谷歌官方的的应用市场,有的时候还是需要从谷歌市场下载APK文件.国内的安卓手机厂商都不自带GooglePlay,甚至一些手机& ...

  10. TextView-属性大全(设置超链接颜色)

    今天想要修改一个textview下的超链接的颜色值,自己当时在网上搜了一下,结果看到的全是怎么给一个textview中的部分内容设置颜色.下划线等.当时就以为在textview属性里面可能不存在设定超 ...