任哲<<μ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. ...
随机推荐
- C++标准库概述
一.C++标准库的主要组件: 1.标准C库 2.I/O流技术(对标准输入输出设备称为标准I/O,对在外磁盘上文件的输入输出称为文件I/O,对内存中指定的字符串存储空间的输入输出称为串I/O) 3.st ...
- 【基础篇】Android MediaPlayer基本使用方式
使用MediaPlayer播放音频或者视频的最简单例子: JAVA代码部分: public class MediaPlayerStudy extends Activity { private Butt ...
- Kinect 开发 —— 语音识别(下)
使用定向麦克风进行波束追踪 (Beam Tracking for a Directional Microphone) 可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam ...
- c# for 和 foreach
1给定长度 不需要计算长度的 for比foreach循环效率高 2 在不确定长度 或者计算长度有性能损耗的时候 用foreach比较方便 2336 循环语句是编程的基本语句,在C#中除了沿用C语言的循 ...
- mkfs---创建Linux文件系统
[root@xiaolizi ~]# mkfsmkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs ...
- BZOJ3697: 采药人的路径(点分治)
Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材.采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是阳性的.采药人每天都要进行采药活动 ...
- BZOJ2118: 墨墨的等式(最短路构造/同余最短路)
Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...
- Spring MVC框架实例
Spring MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC 架构,能够选择是使用内置的 Spring Web 框架还是 ...
- ShopEx 中规格属性添加时,自己主动计算其相应的销售价格,同一时候注意模板中的变量间的计算
在ShopEx中,添加产品的规格时,如颜色.尺寸.是否送货等配置信息,默认情况下,这些内容是须要手动计算的,若仅仅有几个属性值还easy计算,假设每个属性值比較多,通过手动计算将是一个灰常巨大的工作量 ...
- IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以
IOS的UIWebView中JS点击事件,需要加入cursor:pointer;属性才可以. Android的WebView可以支持外链样式,js文件:IOS则需要改为内嵌样式和JS文件.