UCOSII时间任务块
转:http://blog.csdn.net/wchp314/article/details/5416476
任务控制块:
任务控制块是一个结构体数据结构,用于记录各个任务的信息。当任务的CPU的使用权被剥夺时,uCOS-II用它来保存任务的当前状态。当任务重新获得CPU的使用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差的继续执行。任务控制块全部存放在RAM中。
typedef struct os_tcb {
OS_STK *OSTCBStkPtr; /* 指向当前任务使用的堆栈的栈顶。uCOS-II允许每个任务堆栈的大小可以不同,这样用户可以根据实际需要定义任务堆栈的大小,可以节省RAM的空间。另外,由于OSTCBStkPtr是该结构体中的第一个变量,所以可以使用汇编语言方便的访问,因为其偏移量是0。当切换任务时,用户可以容易的知道就绪任务中优先级最高任务的栈顶。*/
#if OS_TASK_CREATE_EXT_EN > 0u
void *OSTCBExtPtr; /* 指向用户定义的扩展任务控制块*/
OS_STK *OSTCBStkBottom; /*指向任务堆栈的栈底。需要考虑一下你使用的MCU的栈指针是按照从高到低还是从低到高变化的。这个变量在测试任务需要的栈空间的时候需要使用。 */
INT32U OSTCBStkSize; /* 同样,该变量也是测试任务需要的栈空间需要。需要注意的是,该变量存储的是指针元的数目,而不是字节数目。*/
INT16U OSTCBOpt; /* 传给函数OSTaskCreateExt()的选择项。目前有OS_TASK_OPT_STK_CHK, OS_TASK_OPT_STK_CLR, OS_TASK_OPT_SAVE_EP */
INT16U OSTCBId; /* Task ID (0..65535),目前没有使用。*/
#endif
struct os_tcb *OSTCBNext;
struct os_tcb *OSTCBPrev; /* 指向TCB的双向链表的前后链接,在OSTimeTick()中使用,用来刷新各任务的任务延迟变量.OSTCBDly。*/
#if (OS_EVENT_EN) || (OS_FLAG_EN > 0u)
OS_EVENT *OSTCBEventPtr; /* 指向事件控制块的指针。*/
#endif
#if (OS_EVENT_EN) && (OS_EVENT_MULTI_EN > 0u)
OS_EVENT **OSTCBEventMultiPtr; /* 指向多重事件控制块的指针*/
#endif
#if ((OS_Q_EN > 0u) && (OS_MAX_QS > 0u)) || (OS_MBOX_EN > 0u)
void *OSTCBMsg; /* 指向传递给任务的消息的指针。*/
#endif
#if (OS_FLAG_EN > 0u) && (OS_MAX_FLAGS > 0u)
#if OS_TASK_DEL_EN > 0u
OS_FLAG_NODE *OSTCBFlagNode; /*指向事件标志的节点的指针。 */
#endif
OS_FLAGS OSTCBFlagsRdy; /* 当任务等待事件标志组时,该变量是使任务进入就绪态的事件标志。*/
#endif
INT32U OSTCBDly; /* 记录事件延时或者挂起的时间。*/
INT8U OSTCBStat; /*任务状态字。比如就绪态、等待*/
INT8U OSTCBStatPend; /*任务挂起状态。*/
INT8U OSTCBPrio; /*任务优先级 */
INT8U OSTCBX; /* 计算优先级用*/
INT8U OSTCBY; /*计算优先级用*/
#if OS_LOWEST_PRIO <= 63u
INT8U OSTCBBitX; /*计算优先级用*/
INT8U OSTCBBitY; /*计算优先级用*/
#else
INT16U OSTCBBitX; /*计算优先级用*/
INT16U OSTCBBitY; /*计算优先级用*/
#endif
#if OS_TASK_DEL_EN > 0u
INT8U OSTCBDelReq; /* 表示任务是否需要删除。*/
#endif
#if OS_TASK_PROFILE_EN > 0u
INT32U OSTCBCtxSwCtr; /* 任务切换的次数。*/
INT32U OSTCBCyclesTot; /* 任务运行的时钟周期数。*/
INT32U OSTCBCyclesStart; /* 任务恢复开始的循环计数器。*/
OS_STK *OSTCBStkBase; /* 指向任务栈开始的指针。*/
INT32U OSTCBStkUsed; /*使用的栈的字节数 */
#endif
#if OS_TASK_NAME_EN > 0u
INT8U *OSTCBTaskName;
#endif
#if OS_TASK_REG_TBL_SIZE > 0u
INT32U OSTCBRegTbl[OS_TASK_REG_TBL_SIZE];
#endif
} OS_TCB;
- 顶
UCOSII时间任务块的更多相关文章
- uC/OS-II时间(OS_time)块
/*************************************************************************************************** ...
- png文件格式详解,获取文件的修改时间,创作时间
http://dev.gameres.com/Program/Visual/Other/PNGFormat.htmhttp://www.360doc.com/content/11/0428/12/10 ...
- vsCode与Hubilder中自定义代码块
平常测试vue的一些属性时总要新增代码,引入文件,麻烦,顾自定义代码块来实现快速新增测试 一.打开设置 1.1 vsCode设置 点击后选择代码块所属的文件类型,比如在html中则选择html类型配置 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- 初次了解的Java多线程
0.1熟悉多线程 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能 ...
- I/O优化篇
转载:http://blog.csdn.net/gzh0222/article/details/9227393 很不错 1.系统学习 IO性能对于一个系统的影响是至关重要的.一个系统经过多项优化以后, ...
- Hadoop Fsimage 和 editlog
在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ ...
- Hadoop学习(2)-- HDFS
随着信息技术的高度发展,数据量越来越多,当一个操作系统管辖范围存储不下时,只能将数据分配到更多的磁盘中存储,但是数据分散在多台磁盘上非常不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,因此诞 ...
- C++中关于new及内存地址的思考
OJ题刷多了,每次都是直接分配内存,那么,你还记得怎么动态分配内存吗? ———————————————————————————————————— 我们知道,使用malloc/calloc等分配内存的函 ...
随机推荐
- 远程开户系统开放API接口
如今随着智能识别技术的成熟和商用,金融领域也开始逐渐试水"远程开户".从OCR身份证识别到人脸识别,到如今市场上即将出现完整的远程开户系统,除了需要成熟的技术做支撑外,还需要对市场 ...
- 解析xml的问题未解决
工作上需要解析xml,目前的逻辑是:解析xml到对象中,然后对象再插入数据库.但这存在内存溢出的风险. 今天做的另外一件事是将循环用到工作上,暂时还没有测试,是否能保证程序的重启.有待观察 ##### ...
- python模块的打包setuptools
样例代码:新建test.py文件,内容如下: print "show me" 新建一个setup.py编译文件,内容如下: from distutils.core import s ...
- MySQL5.6-Tomcat7环境变量的配置
一.MySQL环境变量配置(zip安装):系统-高级系统设置--环境变量--path添加D:\Mysql\bin 找到mysql解压目录下的my-default.ini文件修改 basedir = D ...
- flash跨域访问
-------------------------------------------------------背景------------------------------------------- ...
- VPS 上ubuntu 里搭建VPN服务器
根据https://my.oschina.net/isnail/blog/363151里逐步完成,自己本机WIN10连接不成功,VM里面用WIN7连接也不行,找别人试连却成功了,然后自己用手机4G网络 ...
- Android性能优化(一)之启动加速35%
一.前言 随着项目版本的迭代,App的性能问题会逐渐暴露出来,而好的用户体验与性能表现紧密相关,从本篇文章开始,我将开启一个Android应用性能优化的专题,从理论到实战,从入门到深挖,手把手将性能优 ...
- Angular - - angular.bind、angular.bootstrap、angular.copy
angular.bind 返回一个调用self的函数fn(self代表fn里的this).可以给fn提供参数args(*).这个功能也被称为局部操作,以区别功能. 格式:angular.bind(se ...
- IIS URLReWrite URL 重写模块 下载地址
https://www.microsoft.com/zh-cn/download/details.aspx?id=7435
- UED大全
http://www.baiduux.com/ 百度UFOhttp://ued.sohu.com/ 搜狐UEDhttp://ued.taobao.com/ 淘宝UEDhttp://www.ued ...