ucosII实验报告-消息队列 .pdfVIP

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

【实验目的】

1.了解ADS集成开发环境,完成ADS的安装;

2.嵌入式实时操作系统µC/OS-II中消息队列机制的基本原理和使用方法。

【实验原理】

1.操作系统配置如下:

#defineTASK_STACK_SIZE10*1024

#defineTASK_PRIO10

#defineTSK_NUM5

#defineN_MSG10

#defineTASK11

#defineTASK22

2.相关系统调用如下:

OSTaskCreate():建立一个新任务

OSQCreate():建立一个消息队列

OSQPend():等待消息

OSQPostFront():向消息队列发送消息

OSQPost():向消息队列发送消息

OSQQuery():取得消息队列的信息

OSQFlush():清空消息队列

OSQDel():删除消息队列

OSTimeDly():任务延时

3.设计消息结构。定义如下结构体:

typedefstructmsg_type{//定义消息结构体

INT8Unum;//数据

INT8Uwho;//标记发送方

}MY_MSG;

对于who可取的值,定义如下宏:

#defineTASK11

#defineTASk22

4.定义消息指针数组与事件控制块

void*MsgGrp[N_MSG];//定义消息指针数组

OS_EVENT*Msg_Q;//定义事件控制块

事件控制块的初始化:(在主函数中)

Msg_Q=OSQCreate(MsgGrp[0],N_MSG);//createmsgqueue

【实验要求】

通过消息队列在任务间传递数据:

1.任务TA1以随机(或固定)时间间隔依次将数据1、2、3、...发送至消息队列

q1,每次发送一个数据。

2.TA2以随机(或固定)时间间隔将随机数据发送至q1。

3.TA3从消息队列q1中每次接收一个数据:

如果数据来自TA1,则计算出所有已接收的来自TA1的数据之和,然后延时;

如果数据来自TA2,则将数据输出到屏幕,然后延时(模拟处理数据所需的

时间);

调整发送数据和处理数据的速度,观察发送速度大于处理速度的结果。

【程序代码】

//*********************************************************************

*******************

//**Name:Main.c

//**LicenceGPL

//**Version:1.0

//*********************************************************************

*****************

#include../ucos-ii/includes.h/*uC/OSinterface*/

#includestring.h

#defineTASK_STACK_SIZE10*1024

#defineTASK_PRIO10

#defineTSK_NUM5

#defineN_MSG10

#defineTASK11

#defineTASK22

///***********definetask************************/

OS_STKInterrupt_Stack[TASK_STACK_SIZE]={{0,},{0,}};

OS_STKTask_STK[TSK_NUM][TASK_STACK_SIZE];//definetaskstackarer

//end

//**************d

文档评论(0)

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

从事一线教育多年 具有丰富的教学经验

1亿VIP精品文档

相关文档