- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统实验指导书实验二-实验六
嵌入式系统
实
验
指
导
书
龙岩学院
物理与机电工程学院电子工程系
2013.9
实验二 UCOS-II 任务管理
【实验目的】
1、掌握UCOS-II 中任务管理的函数的应用。
2 、掌握UCOS-II 在STM32 平台下对硬件的控制。
3、掌握开发UCOS-II 应用的程序结构。
【实验步骤】
一、UCOSII 工作原理
UCOSII 提供系统时钟节拍,实现任务切换和任务延时等功能。这个时钟节拍
由OS_TICKS_PER_SEC (在os_cfg.h 中定义)设置,一般我们设置UCOSII 的
系统时钟节拍为1ms~100ms,具体根据你所用处理器和使用需要来设置。本次实
验利用STM32 的SYSTICK 定时器来提供UCOSII 时钟节拍。
UCOSII 早期版本只支持64 个任务,但是从2.80 版本开始,支持任务数提高
到255 个。UCOSII 保留了最高4 个优先级和最低4 个优先级的总共8 个任务,
用于拓展使用,实际上,UCOSII 一般只占用了最低2 个优先级,分别用于空闲
任务(倒数第一)和统计任务(倒数第二),所以剩下给我们使用的任务最多可
达255-2=253 个(V2.91 ) 。
UCOSII 的任何任务都是通过一个叫任务控制块(TCB )的东西来控制的,
每个任务管理块有3 个最重要的参数:1,任务函数指针;2 ,任务堆栈指针;3,
任务优先级;任务控制块就是任务在系统里面的身份证(UCOSII 通过优先级识
别任务),任务控制块我们就不再详细介绍了,详细介绍请参考任哲老师的《嵌
入式实时操作系统UCOSII 原理及应用》一书第二章。
在UCOSII 中,使用CPU 的时候,优先级高(数值小)的任务比优先级低
的任务具有优先使用权,即任务就绪表中总是优先级最高的任务获得CPU 使用
权,只有高优先级的任务让出CPU 使用权(比如延时)时,低优先级的任务才
能获得CPU 使用权。UCOSII 不支持多个任务优先级相同,也就是每个任务的优
先级必须不一样。任务的调度其实就是CPU 运行环境的切换,即:PC 指针、SP
指针和寄存器组等内容的存取过程
UCOSII 的每个任务都是一个死循环。每个任务都处在以下5 种状态之一的
状态下,这5 种状态是:睡眠状态、就绪状态、运行状态、等待状态(等待某一事
件发生)和中断服务状态。
睡眠状态,任务在没有被配备任务控制块或被剥夺了任务控制块时的状态。
就绪状态,系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,
任务已经准备好了,但由于该任务的优先级比正在运行的任务的优先级低, 还
暂时不能运行,这时任务的状态叫做就绪状态。
运行状态,该任务获得CPU 使用权,并正在运行中,此时的任务状态叫做
运行状态等待状态,正在运行的任务,需要等待一段时间或需要等待一个事件发
生再运行时,该任务就会把CPU 的使用权让给别的任务而使任务进入等待状态。
中断服务状态,一个正在运行的任务一旦响应中断申请就会中止运行而去执
行中断服务程序,这时任务的状态叫做中断服务状态。
UCOSII 任务的5 个状态转换关系如图2.1 所示
图2.1 任务的状态转换图
接下来,我们看看在UCOSII 中,与任务相关的几个函数:
1) 建立任务函数
如果想让UCOSII 管理用户的任务,必须先建立任务。UCOSII 提供了我们2 个建立任
务的函数:OSTaskCreat 和OSTaskCreatExt,我们一般用OSTaskCreat 函数来创建任务,该
函数原型为:
OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio)
该函数包括4 个
文档评论(0)