第4章 任务的同步与通信 事件 任务间的同步依赖于任务间的通信。在μC/OS-II中,是使用信号量、邮箱(消息邮箱)和消息队列这些被称作事件的中间环节来实现任务之间的通信的。 一个简单的信号量 1/0 收信方 发信方 共享资源 事件控制块 为了把描述事件的数据结构统一起来,μC/OS-II使用叫做事件控制块ECB的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息队列这些事件。事件控制块中包含包括等待任务表在内的所有有关事件的数据 typedef struct { INT8U OSEventType; //事件的类型 INT16U OSEventCnt; //信号量计数器 void *OSEventPtr; //消息或消息队列的指针 INT8U OSEventGrp; //等待事件的任务组 INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//任务等待表 } OS_EVENT; 把一个任务置于等待状态要调用OS_EventTaskWait( )函数。该函数的原型为: ? void OS_EventTaskWait ( OS_EVENT *pevent //事件控制块的指针 ); 函数OS_EventTaskWait ( ),将在任务调用函数OS×××Pe
原创力文档

文档评论(0)