第4章任务同步与通信_第1页
第4章任务同步与通信_第2页
第4章任务同步与通信_第3页
第4章任务同步与通信_第4页
第4章任务同步与通信_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

控制块的概 3Sept.为了实现各任务之间的合作和无3Sept.4.1.1(续 间接制约关系举例:任务A和任务B共台 3Sept. 到

任务 任务图4-1两个任务使

3Sept.

1->任务 任务1->

任务

00->->

任务 3Sept.4-3Sept.(发送消息缓冲区指针

消息缓冲区指针任务

任务3Sept.4-3Sept.(发送消息缓冲区指针数组的指针任务

消息缓冲区指针数组的指针任务消息缓冲区消息缓冲区 3Sept.待 表待 表任务等 3Sept.typedeftypedefstruct}为了把描述的数据结构统一起来,uC/OS-II使用叫做控制块(ECB)的数据结构来描述诸如信号量、邮箱和消息队列这些。ECB中包含包括等待任务表在内的所有有关的数据。3Sept.

任 务 待 任 务 待 表空 表4-1OSEventType可取的3Sept. voidOSEventWaitListInit

Q3Sept.voidOS_EventTaskWaitvoidOS_EventTaskWaitvoidOS_EventTaskRdyvoid*msg,INT8Umsk3Sept.voidOS_EventTovoidOS_EventTo等3Sept. OS_MAX_EVENTS(在OS_CFG.H中定义),创建OS_MAX_EVENTS个空 t765432106

0t765432t765432106t765432106图4-7 3Sept.

3 任 务 任 务 待 表OSEventTbl[]

则t减1t==0, 图4-8一个信号量 3Sept.创建信号量OS_EVENT*OSSemCreate

INT16U

OS_EVENT*OSSemCreate(INT16U{OS_EVENT*pevent;pevent= if List!=(OS_EVENT*)0) List=(OS_EVENT if(pevent!=(OS_EVENT*)0)pevent->OSEventType=OS_EVENT_TYPE_SEM;pevent-> t=cnt;pevent->OSEventPtr=(void}

return}3Sept.请求信号量 OSSemPend

INT16Utimeout;

OSSemAccept

3Sept. OSSemPost发送信号量3Sept.4-3Sept.OS_EVENT*OS_EVENT*OSSemDel 删除信号量3Sept.INT8UOSSemQueryINT8UOSSemQuery typedefstruct{ 3Sept.

图4-9

3Sept.图4-103Sept.

任 务 待 表 任 务 待 表 OSEventTbl[]

图4-113Sept.OS_EVENTOS_EVENT*OSMutexCreate OSMutexPendOS_EVENT*pevent,// OSMutexAcceptOS_EVENT*pevent,// 3Sept.INT8UOSMutexPost

OS_EVENT OS_EVENT OS_EVENT 3Sept.4-3Sept.

任 务 待 表 任 务 待 表 OSEventTbl[]

图4-133Sept.创建消息邮箱OS_EVENTOSMboxCreate

void OS_EVENT*OSMboxCreate(void{OS_EVENTpevent= if List!=(OS_EVENT*)0) List=(OS_EVENT if(pevent!=(OS_EVENT*)0)pevent-> t=0;pevent->OSEventPtr=msg;}return}3Sept.INT8UOSMboxPostOpt

void*msg,

INT8UINT8UOSMboxPost void3Sept.4.4.1(续void*OSMboxPend

INT8U*err

voidvoid*OSMboxAccept 请求消息邮箱之3Sept.4.4.1(续查询邮箱的状态INT8UOSMboxQuery

OS_EVENTOS_EVENT*OSMboxDel 删除邮箱3Sept.4-3Sept.

void

控图4-14 3Sept.

指针,指向被取出消息的位置。当它移动到与 表4-2图5-14中各参数含3Sept.typedefstructstructos_q *OSQPtr; **OSQStart; ** ** **OSQOut; }

3Sept.创建消息对列OS_EVENTOSQCreate

void*start

3Sept.请求消息对列之请求消息对列之void*OSQAccept

voidvoid*OSQPend INT8U3Sept.向消息对列发送消息之OSQPost()或INT8UOSQPost/OSQPostFront void

向消息对列发送消息之INT8UOSQPostOpt

void*msg,INT8Uopt

3Sept.4-3Sept.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论