请选择 进入手机版 | 继续访问电脑版
快捷导航
0 84

uC/OS-Ⅱ事件控制块

陈燕 于 2017-12-21 10:27 发表在 [技术分享] [复制链接]
本帖最后由 陈燕 于 2017-12-21 20:53 编辑

如果你看到我的帖子没写完,不要惊讶<_<只是因为不想保存在草稿箱中,因为之前的帖子保存为草稿,后来被覆盖没了,我很是忧伤,所以就先发了,这样一定不会丢!


一、事件控制块
事件控制块是统一管理这些通信方法的机制。

(一)单任务使用单个事件
注:只有任务可以等待事件发生,ISR不能等待事件发生



(二)多任务使用一个事件



(三)任务等待和释放信号量



(四)事件控制块的数据结构

注:当所定义的事件是邮箱时,它指向一个消息,而当所定义的事件是消息队列时,它指向一个数据结构。
OSEventTbl[]和 OSEventGrp:等待某事件的任务
而OSRdyTbl[]和OSRdyGrp:系统中处于就绪状态的任务
当一任务等待一事件时,将此任务加入此事件的等待任务列表
(五)空余事件控制块链表
每当建立一个信号量、互斥型信号量、邮箱或者消息队列时,就从该链表中取出一个空余事件控制块,并对它进行初始化。
因为信号量等一旦建立就不能删除,所以ECB不能放回到空闲事件控制块链表中。

二、事件控制块的通用操作

OS_EventWaitListInit(); //初始化一个空的等待任务列表
注:参数只有一个,就是指向需要初始化的事件控制块的指针 pevent
OS_EventTaskRdy(); //从等待任务队列中删除 HPT任务(Highest Priority Task),并把该任务置于就绪态
OS_EventTaskWait(); //将当前任务从就绪任务表中删除,并放到相应事件的事件控制块的等待任务表中
OS_EventTo(); //从事件控制块中的等待任务列表里将任务删除,并把它置成就绪状态















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Connecting & Messaging from Any.

共 0 个关于本帖的回复 最后回复于 2017-12-21 10:27

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

推荐板块

精彩推荐

热门排行

明星用户

手机版|小黑屋|AnyMSG ( ©AnyMSG 2009 - 2017 · ICP备16009991号 )

GMT+8, 2019-2-16 20:27