任哲<<μ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. ...
随机推荐
- Java中Webservice调用.NET天气接口生成客户端异常
学习webservice时候有个例子调用公网的天气预报接口实现查询天气的功能.然而在使用命令编译客户端代码的时候出错了.大概看了一下网上说是需要将将文件中所有出现的 < s:element re ...
- 抓包神器Fiddler之Https请求随心转
随着AppleStore对APP的审核越来越严格,客户端请求服务端API的方式大多数都变更为了https,在更安全的同时又引起了另外一个问题——本地抓包开发调试的不便. 一般来说,我们在开发API的时 ...
- 图片工具GraphicsMagick的安装配置与基本使用
本文使用GraphicsMagick的版本为1.3.18 (Released March 9, 2013). 1.简介 GraphicsMagick是一个短小精悍的的图片处理工具和库集合.对于Java ...
- RecyclerView下拉刷新和载入很多其它
之前一直写的是ListVIew下拉刷新,可是好多朋友都说要RecycleView的下拉刷新和滑动载入.事实上,这个原理都是几乎相同.抽出时间,我就写了下RecycleView的下拉刷新和滑动载入很多其 ...
- mac自己定义tree命令
编辑文件: vim ~/.bash_profile 在文件末尾追加: alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____| ...
- lubuntu自动登录(lxde)
lubuntu自动登录(lxde) 1.重启ubuntu,在grub界面长按shirft进入grub菜单: 2.选择recovery mode,按"e"键进入编辑页面: 3.把ro ...
- 分组的listview——ExpandableListView
开发使用到的数据统计时可以用分组的ExpandablelistView 效果:
- 17.Node.js 回调函数--异步编程
转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程 ...
- gdbserver 使用方法
1.分别编译出在宿主机运行的交叉调试器arm-linux-gdb和在目标板上运行的gdbserver: 2.在目标板开启gdbserver#gdbserver 宿主机ip:任意指定端口号 ./待调试 ...
- 用Navicat连接MySQL数据库出现1251错误:密码方式错误
原因:因为MySQL8.0是最新版密码保存方式,而图形化数据库管理工具还是原先的密码保存方式. 解决方式: 用CMD命令号方式进入MySQL use mysql: ALTER USER 'root'@ ...