μCOSⅡ操作系统任务接口分析.docVIP

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

μCOSⅡ操作系统任务接口分析   摘要:文章通过分析嵌入式实时操作系统μC/OS-Ⅱ提供的任务相关的接口,来引出μC/OS-Ⅱ中接口的设计思路和实现机制,并通过实例予以验证,对μC/OS-Ⅱ的应用程序的开发提供具有的参考价值。   关键词:μC/OS-Ⅱ 任务 接口      为了使用户更好地使用操作系统进行应用程序开发,操作系统一般会提供各种接口。这些接口是操作系统提供给用户的一组函数,供用户在编写应用程序时调用,完成应用程序对操作系统的各种调用,包括进程调度、存储管理、图形设备接口及文件管理等。μC/OS-Ⅱ作为一个嵌入式操作系统,提供了各种与任务相关的接口,这些接口对于在μC/OS-Ⅱ上应用程序的开发具有重要的意义。      简介      作为一种嵌入式的操作系统,μC/OS-Ⅱ提供给用户各种接口,使得用户能够利用这些接口方便的进行开发,而μC/OS-Ⅱ中最主要的接口就是与任务相关的接口。μC/OS-Ⅱ操作系统中的与任务相关的接口不仅包括任务的建立、删除、挂起、恢复等,还包括任务之间同步和通信的接口。由于任务是μC/OS-Ⅱ操作系统的基本调度单位,而嵌入式系统的应用程序是通过各个任务以及它们之间的相互通信来实现的,因此任务处理部分也是μC/OS-Ⅱ操作系统非常重要的组成部分。下面分别分析任务相关接口的设计思路和实现机制。      任务类接口      μC/OS-Ⅱ操作系统可以管理64个任务,但保留了4个最高优先级和4个最低优先级的任务供操作系统使用,因此用户仅可以使用56个任务。任务类接口包括如何在用户应用程序中建立任务、删除任务、改变任务的优先级、挂起和恢复任务等。   (一)建立任务的接口   μC/OS-Ⅱ操作系统要能够管理用户的任务,必须先建立任务。用户可以通过传递任务地址和其他参数到OSTaskCreate函数来建立任务。μC/OS-Ⅱ操作系统的任务可以在多任务调度开始前建立,也可以在其他任务的执行过程中被建立。但是,在开始多任务调度前,必须建立至少一个任务。OSTaskCreate()的函数定义如下,有四个参数:task是任务代码的指针,pdata是当任务开始传递给任务的参数的指针,ptos是分配给任务堆栈的栈顶指针,prio是分配给任务的优先级。   INT8U OSTaskCreate (void (*task)(void *pd), void *pdata,   OS_STK *ptos, INT8U prio)   (二)删除任务的接口   当μC/OS-Ⅱ的应用程序中不再需要某个任务时,可以删除某个任务。删除任务,是将任务返回并处于休眠状态,而不是删除任务的代码,此时任务的代码不再被调用。任务删除的功能是通过调用接口OSTaskDel()来完成的。调用接口OSTaskDel()之前,必须确认用户所要删除的任务并非是空闲任务,因为空闲任务是不允许被删除的。OSTaskDel()也不被允许在ISR例程中删除一个任务。调用此函数的任务可以通过指定OS_PRIO_SELF参数来删除自己。该函数的接口参数很简单,只需要知道要删除任务的优先级,接口定义如下:   INT8U OSTaskDel (INT8U prio)   (三)改变任务优先级的接口   μC/OS-Ⅱ会在用户建立任务的时候会分配给任务一个优先级,每个任务的优先级各不相同且唯一。在程序运行期间,μC/OS-Ⅱ允许用户动态的改变任务的优先级,通过调用OSTaskChangePrio()可以改变任务的优先级。OSTaskChangePrio()的函数定义如下:   INT8U OSTaskChangePrio (INT8U oldprio,INT8U newprio)   用户不能改变空闲任务的优先级,但用户可以改变调用本函数的任务或者其他任务的优先级。为了改变调用本函数的任务的优先级,用户可以指定该任务当前的优先级或OS_PRIO_SELF,OSTaskChangePrio()会决定该任务的优先级。用户还必须指定任务的新(即想要的)优先级。因为μC/OS-Ⅱ不允许多个任务具有相同的优先级,所以OSTaskChangePrio()需要检验新优先级是否合法。   (四)挂起任务和恢复任务的接口   通常μC/OS-Ⅱ操作系统中也会遇到挂起运行的任务。任务的挂起通过调用OSTaskSuspend()函数完成,而被挂起的任务需要通过OSTaskResume()函数来恢复。若任务在被挂起同时也在等待延时的期满,那么挂起操作需要被取消,而任务继续等待延时期满,并转入就绪状态。任务可以挂起自己和其他任务。因为OSTaskSuspend()不能挂起空闲任务,所以必须得确认用户的应用程序不是处于空闲任务

文档评论(0)

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

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

1亿VIP精品文档

相关文档