从第二章开始啦:

程序控制块(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. 搭建Spark源码研读和代码调试的开发环境

    转载自https://github.com/linbojin/spark-notes/blob/master/ide-setup.md 搭建Spark源码研读和代码调试的开发环境 工欲善其事,必先利其 ...

  2. LuoguP2762 太空飞行计划问题(最大权闭合子图,最小割)

    题目描述 W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,…,Em},和进行这些实验需要使用的全部仪器的 ...

  3. python版 百度签到

    经常玩贴吧,刚学python ,所以自己弄了一个python版的签到程序.自己的东西总是最好的. 登陆模块参考的http://www.crifan.com/emulate_login_website_ ...

  4. 03011_预处理对象executeUpdate方法(实现数据库的增、删、改)

    1.概述 (1)通过预处理对象的executeUpdate方法,完成记录的insert\update\delete语句的执行: (2)操作格式统一如下: ①注册驱动: ②获取连接: ③获取预处理对象: ...

  5. 解决xorm逆向mssql报datetime2不兼容的异常错误

    xorm作为golang开发者的一大利器,深受大家的喜爱,可是最近在逆向mssql的时候,报了这么一个错误: 最后找了半天发现xorm没有预置DateTime2类型,经过几番折腾,在xorm源码的en ...

  6. 牛客网剑指offer刷题总结

    二维数组中的查找: 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 两 ...

  7. JXL.jar简单封装Excel读写操作

    1.分析 一个excel文件能够有多页,每页excel中能够有多行,每行中能够有多列.用面向对象的思想能够把一行中的某列看作是一个String对象,一行看作是一个包括多个列的对象.一页是包括多行的对面 ...

  8. 逐步配置企业版Symantec Norton防病毒服务器

    逐步配置企业版Symantec Norton防病毒服务器 配置企业版Symantec Norton NT操作系统,已经安装IIS 安装Symantec Norton 10 安装系统中心 650) th ...

  9. python运算符优先级表

    运算符 描述 lambda Lambda表达式 or 布尔“或” and 布尔“与” not x 布尔“非” in,not in 成员测试 is,is not 同一性测试 <,<=,> ...

  10. android 仿ios 对话框已封装成工具类

    对话框 在android中是一种非经常见的交互提示用户的方式,可是非常多产品狗都叫我们这些做android的仿ios,搞的我们android程序猿非常苦逼,凭什么效果老是仿ios,有没有一点情怀,只是 ...