任哲<<μ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. ...
随机推荐
- 压状态bfs
一般地图很小,状态不多,可以装压或者hash,构造压缩或hash的函数,构造还原地图的函数,然后就无脑bfs(感觉就是SPFA) 题目: 1.玩具游戏:二进制压缩状态 #include<cstd ...
- colrm---删除文件制定列
- python3 时间处理
1 标记当前时间 import datetime from dateutil import tz #标记当前时间为中国时间 注意(replace 只有标记的意思没有转化的意思) datetime.da ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper
FileSortHelper的核心功能就是,对文件集合FileInfo排序.FileInfo有若干字段,根据字段定义了4种比较器Comparator.调用示例:Collections.sort(Lis ...
- Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7:
Ubuntu 14 中给 APACHE2安装 SSL 模块 Enable SSL site on Ubuntu 14 LTS, Apache 2.4.7: 参考 http://blog.csdn.ne ...
- ajax嵌套ajax 可能出现问题 的解决办法
ajax由于他的异步特性 在第一次请求中的循环中嵌套第二个ajax会数据会读不出来 第一种 描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax了 优点:代码放在 ...
- NOIP2015运输计划(二分答案)
题目描述 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有星球. 小P掌管一家物流公司,该公司有很多个运输计划,每 ...
- php訪问mysql数据库
PHP訪问Mysql数据库 PHP能够通过mysql接口和mysqli接口訪问mysql数据库. 须要加入mysql和mysqli接口才干訪问mysql数据库. windows下配置amp: a.安装 ...
- [React] Render Text Only Components in React 16
In this session we create a comment component to explore how to create components that only render t ...
- [Node & Tests] Intergration tests for Authentication
For intergration tests, always remember when you create a 'mass' you should aslo clean up the 'mass' ...