- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个简单的信号量 任务的优先权 及优先级别 μC/OS_II 把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高,数字越大则表示任务的优先级别越低 用户可以根据应用程序的需要,在文件OS_CFG.H中通过给表示最低优先级别的常数OS_LOWEST_PRIO赋值的方法,来说明应用程序中任务优先级别的数目。该常数一旦被定义,则意味着系统中可供使用的优先级别为:0,1,2,……,OS_LOWEST_PRIO,共OS_LOWEST_PRIO+1个 固定地,系统总是把最低优先级别OS_LOWEST_PRIO自动赋给空闲任务。如果应用程序中还使用了统计任务,系统则会把优先级别OS_LOWEST_PRIO-1自动赋给统计任务,因此用户任务可以使用的优先级别是:0,1,2…OS_LOWEST_PRIO-2,共OS_LOWEST_PRIO-1个 任 务 堆 栈 保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈,任务堆栈是任务的重要的组成部分 在应用程序中定义任务堆栈的栈区非常简单,即定义一个OS_STK类型的一个数组并在创建一个任务时把这个数组的地址赋给该任务就可以了。 例如: ?//定义堆栈的长度 #define TASK_STK_SIZE 512 //定义一个数组来作为任务堆栈 OS_STK TaskStk[TASK_STK_SIZE]; typedef unsigned int OS_STK; //这是系统定义的一个数据类型 void main(void) { …… OSTaskCreate( MyTask, //任务的指针 MyTaskAgu, //传递给任务的参数 MyTaskStk[MyTaskStkN-1],//任务堆栈栈顶地址 20 //任务的优先级别 ); …… } 在创建用户任务时,要传递任务的堆栈指针和任务优先级别 使用函数OSTaskCreate( )创建任务时,一定要注意所使用的处理器对堆栈增长方向的支持是向上的还是向下的 任务堆栈的初始化 应用程序在创建一个新任务的时候,必须把在系统启动这个任务时CPU各寄存器所需要的初始数据(任务指针、任务堆栈指针、程序状态字等等),事先存放在任务的堆栈中 μC/OS-II在创建任务函数OSTaskCreate( )中通过调用任务堆栈初始化函数OSTaskStkInit( )来完成任务堆栈初始化工作的 它的原型如下: ? OS_STK *OSTaskStkInit( void (*task)(void *pd), void *pdato, OS_STK *ptos, INT16U opt ); 由于各种处理器的寄存器及对堆栈的操作方式不尽相同,因此该函数需要用户在进行μC/OS-II的移植时,按所使用的处理器由用户来编写。实现这个函数的具体细节,将在本书有关μC/OS-II移植的章节中做进 一步的介绍 其实,任务堆栈的初始化就是对该任务的虚拟处理器的初始化(复位)。 任务控制块 (OS_TCB) 及任务控制块链表 μC/OS-II用来记录任务的堆栈指针、任务的当前状态、任务的优先级别等一些与任务管理有关的属性的表就叫做任务控制块 任务控制块就相当于是一个任务的身份证,没有任务控制块的任务是不能被系统承认和管理的 任务控制块结构的主要成员 typedef struct os_tcb { OS_STK *OSTCBStkPtr; //指向任务堆栈栈顶的指针 ?…… ? struct os_tcb *OSTCBNext;//指向后一个任务控制块的指针 struct os_tcb *OSTCBPrev; //指向前一个任务控制块的指针 ? …… INT16U OSTCBDly; //任务等待的时限(节拍数) INT8U OSTCBStat; //任务的当前状态标志 INT8U OSTCBPrio; //任务的优先级别 ? …… } OS_TCB; 任务控制块链表 空任务控制块链表 当应用程序调用函数OSTaskCreate( )创建一个任务时,这个函数会调用系统函数OSTCBInit ( )来为任务控制块进行初始化。这个函数首先为被创建任务从空任务控制块链表获取一个任务控制块,然后用任务的属性对任务控制块各个成员进行赋
您可能关注的文档
- SoC实例要点详解.ppt
- SolidWorks运动仿真培训要点详解.ppt
- Spark学习总结-入门要点详解.ppt
- SPSS经典基础教程要点详解.ppt
- SQL_SERVER_基础及日常管理培训要点详解.ppt
- SQL2008第一章要点详解.ppt
- SQLServer2008基础要点详解.ppt
- Sundray_WLAN_v2.0_2014年度渠道初级认证培训07_无线基础要点详解.pptx
- SystemInterconnectionDesignTrade-offsinThree-Dimensional(3-D)IntegratedCircuits要点详解.ppt
- taoyuan中外运久运物要点详解.ppt
最近下载
- 传热学第5版课后习题答案(杨世铭-陶文铨)].docx VIP
- 医疗器械经营质量管理制度及目录、工作程序.pdf VIP
- 02S404 防水套管国标规范.pdf VIP
- 重型车DPF标定手册.pdf VIP
- 办公租赁合同模板下载(3篇).docx VIP
- GB∕T 39743-2021 滑动轴承 热塑性塑料轴套 尺寸与公差.docx VIP
- 《GB8958-2006缺氧危险作业安全规程》(2025版)深度解析.pptx
- JTT 660-2006 -水上加油站安全与防污染技术要求.pdf VIP
- 药品处方集课件.pptx VIP
- 2022-2023学年浙江省9+1高中联盟高二上学期期中考试 英语 试题(学生版+解析版).docx
原创力文档


文档评论(0)