- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式基于ucOS的多任务系统
重庆交通大学计算机与信息学院
设计性实验报告
成 绩:
班 级: 电子(3)班
学 号:
姓 名:
实验项目名称: 基于ucOS的多任务系统
实验项目性质: 设 计 性 实 验
实验所属课程: 嵌 入 式 系 统
实验室(中心): 电 子 实 验 室
指 导 教 师 :
实验完成时间: 2010 年 6 月 1 日一、实验目的
通过实验,学习在uC/OSII操作系统中控制多个任务之间的切换和同步,以及多任务控制程序的编写方法。
二、实验内容及要求
(一)内容
建立三个uC/OSII的任务,一个用于检测KEY按键输入(P0.20口的输入),为按键检测任务;另一个任务用于控制LED流水灯,为LED控制任务,还有一个任务是控制蜂鸣器,称作蜂鸣器控制任务。通过三个任务实现LED流水灯、蜂鸣器、按键之间的关联切换。
(二)要求
(1)设计LED流水灯的闪烁方式。
(2)蜂鸣器的鸣叫方式。
(3)按键的功能。
(4)LED、蜂鸣器、按键之间有一定的切换关系。
三、实验设备及软件
硬件:PC机 一台 ; MagicARM2200-S教学实验开发平台 一套
软件:Windows98/XP/2000系统 ;ADS1.2集成开发环境
uC/OSII操作系统
四、设计方案
(一)方案原理
1、信号量与邮箱
(1)要完成两个任务之间的单向同步,需要通过邮箱或者信号量来实现。
用信号量进行单向同步,以一个事情触发两个以上任务时,按键任务划分原则可以将他们合并为一个任务。如果这些任务因为其他原因不能合并(不同的功能部件),则可以采用有消息分发功能的通信机制——邮箱,以减少通信工具的个数。
(2)且用信号量进行行为同步时,只能提供同步的时刻信息,不能提供内容信息,当控制方在对被控制方进行控制,且还需要向被控制方提供内容信息(数据或字符串)时,消息邮箱是一种有效的方案。
(3)当两个任务是系统“信息链条”中的相邻两个环节时,前一个任务的输出信息就是后一个任务的输入信息,消息邮箱就是连接这两个任务的桥梁。在消息邮箱看来,提供消息的任务(或ISR)是生产者,读取消息的任务是消费者,正常情况下,消息的消费时间比生产时间短,消费者总是在等待消息的到来,这时,生产者每向“消息邮箱”发送一次“消息”,就立即被消费者取走,两者达到理想的同步效果。
(4)由于“消息邮箱”里只能存放一条消息,所以在用消息邮箱进行同步控制时,必须满足一个前提:任何时候消息的产生速度都比消息的消费速度慢,即被控制任务总是在等待消息。
2、关于优先级
如果单向同步发生在两个任务之间,那么实际同步效果与两个任务的优先级有很大关系,当控制方任务的优先级低于被控制方任务的优先级时,控制方任务发出信息后使被控制方任务进入就绪状态,瞬时同步效果较好,
当控制方任务的优先级高于被控制方任务的优先级时,控制方任务发出信息后使被控制方任务进入就绪状态,但并不发声切换,只有当控制方再次调用系统服务函数(如延时函数)并使自己挂起时,被控制方任务才会有运行机会,瞬时同步效果较差,当被控制方任务的实时性要求不高,或者采取有缓冲功能的通行手段时,这是可以接受的。常用做法是采用首尾触发方式(控制方任务的尾部触发被控制方的首部),控制方在发出信息后立即调用延时函数(延时时间大于被控制方任务的处理时间),主动使自己挂起来,让低优先级的控制方任务尽快得到运行机会,从而改善同步效果。
(二)方案设计
LED流水灯闪烁方式:
UCOS_LED[42]={0xff,0x00,
0x33,0xcc,0x55,0x33,0xcc,0xaa,
0x03,0x06,0x0c,0x18,0x30,0x60,0xc0,0x00,
0xc0,0x60,0x30,0x18,0x0c,0x06,0x03,0x00,
0x81,0xc3,0xe7,0xff,0xe7,0xc3,0x81,0x00,
0xff,0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,
0xff,0x00};
2、蜂鸣器鸣叫方式:
蜂鸣器相当于一个警报提醒,提醒当前进程为等待按键状态,鸣叫方式为持续鸣叫,持续时间为3秒。另外由于LED任务执行完一次需要的时间是21秒,因此在
文档评论(0)