上学期嵌入式实验.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多

实验一µCOS-II任务基础实验

一、实验目的

1.理解任务管理的基本原理,了解任务各个基本状态及其变迁过程;

2.掌握µCOS-II中任务管理的基本方法(创建、启动、挂起、解挂任务);

3.熟练使用µCOS-II任务管理的基本系统调用。

二、实验内容

建立两个任务Task1和Task2:任务Task1不断地挂起自己,再被任务

Task2解挂,两个任务不断地切换执行。并在串口打印相应的信息。用户可以通

过串口进行观察。

三、实验设备

1.硬件:JXARM9-2410教学实验箱、PC机;

2.软件:PC机操作系统Windows98(2000、XP)

四、实验原理

一个任务通常是一个无限的循环,由于任务的执行是由操作系统内核调度

的,因此任务是绝不会返回的,其返回参数必须定义成void。在μC/OS-Ⅱ中,

当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的

CPU使用权就会被抢占,高优先级任务会立刻得到CPU的控制权(在系统允

许调度和任务切换的前提下)。μC/OS-Ⅱ可以管理多达64个任务,但目前版本

的μC/OS-Ⅱ有两个任务已经被系统占用了(即空闲任务和统计任务)。必须给每

个任务赋以不同的优先级,任务的优先级号就是任务编号(ID),优先级可以从

0到OS_LOWEST_PRIORITY。优先级号越低,任务的优先级越高。μC/OS-Ⅱ

总是运行进入就绪态的优先级最高的任务。

五、本实验中所用到的µC/OS-II相关函数

1.OSTaskCreate()

建立一个新任务。任务的建立可以在多任务环境启动之前,也可以在正在运

行的任务中建立。中断处理程序中不能建立任务。一个任务可以为无限循环的结

构。

函数原型:

INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8U

prio);

参数说明:task是指向任务代码首地址的指针。

Pdata指向一个数据结构,该结构用来在建立任务时向任务传递参数。

返回值:

OSTaskCreate()的返回值为下述之一:

OS_NO_ERR:函数调用成功。

OS_PRIO_EXIST:具有该优先级的任务已经存在。

OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO。

OS_NO_MORE_TCB:系统中没有OS_TCB可以分配给任务了。

2.OSTaskSuspend()

无条件挂起一个任务。调用此函数的任务也可以传递参数OS_PRIO_SELF,

挂起调用任务本身。当前任务挂起后,只有其他任务才能唤醒被挂起的任务。任

务挂起后,系统会重新进行任务调度,运行下一个优先级最高的就绪任务。唤醒

挂起任务需要调用函数OSTaskResume()。任务的挂起是可以叠加到其他操作

上的。例如,任务被挂起时正在进行延时操作,那么任务的唤醒就需要两个条件:

延时的结束以及其他任务的唤醒操作。又如,任务被挂起时正在等待信号量,当

任务从信号量的等待对列中清除后也不能立即运行,而必须等到被唤醒后。

函数原型:INT8UOSTaskSuspend(INT8Uprio);

参数说明:prio为指定要获取挂起的任务优先级,也可以指定参数

OS_PRIO_SELF,挂起任务本身。此时,下一个优先级最高的就绪任务将运行。

返回值:

OSTaskSuspend()的返回值为下述之一:

OS_NO_ERR:函数调用成功。

OS_TASK_SUSPEND_IDLE:试图挂起μC/OS-II中的空闲任务(Idle

task)。此为操作。

OS_PRIO_INVALID:参数指定的优先级大于OS_LOWEST_PRIO

文档评论(0)

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

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

1亿VIP精品文档

相关文档