《ARM原理及应用》实验指导书.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文档。上传文档
查看更多

试验一μC/OS-II任务创建

试验目的:

通过查看任务创建的源代码了解任务创建的过程及与系统的关系;驾驭μC/OS-II任务创建的方法;了解基于任务的系统设计方法。

试验原理:

任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉。这里要留意的是,任务代码并不是被真正的删除了,而只是μC/OS-II不再理睬该任务代码,所以该任务代码不会再运行。任务看起来与任何C函数一样,具有一个返回类型和一个参数,只是它从不返回。任务的返回类型必需被定义成void型。

μC/OS-II可以管理多达64个任务,并从中保留了四个最高优先级和四个最低优先级的任务供自己运用,所以用户可以运用的只有56个任务。任务的优先级越高,反映优先级的值则越低。在最新的μC/OS-II版本中,任务的优先级数也可作为任务的标识符运用。

想让μC/OS-II管理用户的任务,用户必须要先建立任务。用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate()或OSTaskCreateExt()。OSTaskCreate()与μC/OS-II是向下兼容的,OSTaskCreateExt()是OSTaskCreate()的扩展版本,供应了一些附加的功能。用两个函数中的任何一个都可以建立任务。任务可以在多任务调度起先前建立,也可以在其它任务的执行过程中被建立。在起先多任务调度(即调用OSStart())前,用户必需建立至少一个任务。任务不能由中断服务程序(ISR)来建立。

开发板部分引脚配置图:

设备

对应引脚

LED1

P1.16

LED2

P1.17

LED3

P1.18

LED4

P1.19

LED5

P1.20

LED6

P1.21

LED7

P1.22

LED8

P1.23

按键

P0.16

蜂鸣器

P1.25

试验步骤:

1、依据概述中“IAREmbeddedWorkbench运用”打开位于D:\pxa270\试验程序\试验一\Ex1的工程文件。

2、在Workspace一栏中打开app.c文件,从文件中学习任务产生的方法和任务应用的方法。

3、建立一个任务,运用LED_Toggle()函数,定时对LEDD3进行限制。

4、编译工程后,通过概述中的“μC/OS-II试验烧写说明”,下载修改后的程序。

5、通过通过LED闪耀状况检验任务建立的正确性。

6、运用如下图的功能,查找OSTaskCreate函数,通过源代码深化了解任务产生的过程。

思索题:

1、建立任务的过程包括那些步骤。

2、系统对任务产生须要那些初始化和设置。

3、通过查看源代码,找出以下变量的是怎样定义的,并对其进行简洁的意义说明。

OS_STK,OSTCBPrioTbl,OS_TCB,OSTCBFreeList,OSTCBList,OSRdyGrp,

OSRdyTbl

试验二μC/OS-II同步与通信

试验目的:

通过查看信号量创建和邮箱创建的源代码,了解信号量创建的过程及与系统的关系;掌握μC/OS-II信号量创建和邮箱创建的方法;了解并运用信号量和邮箱对任务进行同步和通信。

试验原理:

在μC/OS-II中,有多种方法可以爱护任务之间的共享数据和供应任务之间的通讯:一是利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和打开中断。

当两个任务或者一个任务和一个中断服务子程序共享某些数据时,可以采纳这种方法。二是利用函数OSSchedLock()和OSSchekUnlock()对μC/OS-II中的任务调度函数上锁和

开锁。用这种方法也可以实现数据的共享。另外三种用于数据共享和任务通讯的方法:信号量、邮箱和消息队列。一个任务或者中断服务子程序可以通过事务限制块ECB(EventControlBlocks)来向另

外的任务发信号。这里,全部的信号都被看成是事务(Event)。这也说明为什么上面把用于通讯的数据结构叫做事务限制块。一个任务还可以等待另一个任务或中断服务子程序给它发送信号。这里要留意的是,只有任务可以等待事务发生,中断服务子程序是不能这样做的。对于处于等待状态的任务,还可以给它指定一个最长等待时间,以此来防止因为等待的事务没有发生而无限期地等下去。

多个任务可以同时等待同一个事务的发生。在这种状况下,当该事务发生后,全部等待该事务的任务中,优先级最高的任务得到了该事务并进入就绪状态,打算执行。上面讲到的事务,可以是信号量、邮箱或者消息队列等。当事务限制块是一个信号量时,任务可以等待它,也可以给它发送消息。

邮箱是μC/OS-II中另一种通讯机

文档评论(0)

176****7225 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档