ucOS-II--入门教程好好学.pptVIP

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ucOS-II--入门教程好好学

一个简单的信号量 任务的优先权 及优先级别 μ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 ( )来为任务控制块进行初始化。这个函数首先为被创建任务从空任务控制块链表获取一个任务控制块,然后用任务的属性对任务控制块各个成员进行赋

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档