任哲<<μC/OS>>
从第二章开始啦:


程序控制块(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>>的更多相关文章
- NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
- Node.js:OS模块
os模块,可以用来获取操作系统相关的信息和机器物理信息,例如操作系统平台,内核,cpu架构,内存,cpu,网卡等信息. 使用如下所示: const os = require('os'); var de ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- Mac OS 使用 Vagrant 管理虚拟机(VirtualBox)
Vagrant(官网.github)是一款构建虚拟开发环境的工具,支持 Window,Linux,Mac OS,Vagrant 中的 Boxes 概念类似于 Docker(实质是不同的),你可以把它看 ...
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- java 利用ManagementFactory获取jvm,os的一些信息--转
原文地址:http://blog.csdn.net/dream_broken/article/details/49759043 想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如 ...
- 让 ASP.NET vNext 在 Mac OS 中飞呀飞。。。
写在前面 阅读目录: 娓娓道来 Install ASP.NET vNext Command Line Tools 安装 Homebrew 使用 Homebrew,安装 KVM Install Subl ...
- Mac OS X 上编写 ASP.NET vNext (二) IDE配置
上一篇中介绍了如何在OS X上搭建.Net运行时.不过光有运行时还不够,还需要有一个好用的IDE,有了IDE的支持,OS X上的开发才称为可能. 和上篇类似,这里先列举出具体步骤,个人可以根据自己的情 ...
- 在Mac OS X上安装ASP.NET 5(译文)
ASP.NET 5 运行在包括OS X的可用于多个平台的.NET Execution Environment(DNX)上.本文介绍如何在OS X上通过HomeBrew安装DNX和ASP.NET 5. ...
随机推荐
- Linux下VsFTP和ProFTP用户管理高级技巧 之一
Linux下VsFTP和ProFTP用户管理高级技巧 FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问 ...
- js中Object.defineProperties 定义一个在原对象可读可写的方法
function A(){ this.name = 'hellow word'; } Object.defineProperties( A.prototype,{ doSomething2 : { v ...
- PHP类中的__get()和__set函数到底有什么用
PHP类中的__get()和__set函数到底有什么用 一.总结 一句话总结:当试图获取一个不可达变量时,类会自动调用__get.同样的,当试图设置一个不可达变量时,类会自动调用__set.在网站中, ...
- Flume的可靠性
Flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失. Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to- end(收到数据agent首先将event写到磁 ...
- 升级你的Linux日志系统
650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...
- 如果把父组件的数据实时的传递到子组件:用watch
1.在子组件使用watch来监听传递给子组件的数据,然后更新子组件的数据. 2.watch和computed结合使用效果非常好. 参考链接:https://blog.csdn.net/zhouweix ...
- js上传文件(图片)的格式和大小限制
如果你想快速解决这个问题,看本文就够了.查了好多资料,终于解决了,太耗时间了,本文留给给后来者,希望你们工作的更轻松 本文保存为.html文件用浏览器打开即可测试功能 <form id=&quo ...
- django-rest-framework框架 第四篇 认证Authentication
认证Authentication 什么是身份认证 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或与其签名的令牌)关联的机制. 视图的最开始处运行身份验证 在权限和限制检查发生之前,以及在允许 ...
- <link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /> <LINK href="Xubuntu.ico" rel="shortcut icon"> <link href="Xubuntu.ico" rel="B
<link rel="shortcut icon" href="Xubuntu.ico" type="image/x-icon" /& ...
- NIO专栏学习
http://blog.csdn.net/column/details/12993.html