uc/os基本知识-事件

本文大部分内容来自任哲-嵌入式实时操作系统UC/OS-II原理及应用一书。

1、uC/OS把信号量、消息邮件和消息队列这类用于任务同步和通信的数据结构叫做事件

2、对于等待事件任务的记录,uC/OS采用了与任务就绪表类似的方法,其使用一个8位类型的数组OSEventTbl[]作为记录等待事件的记录表,即等待任务表;同样也有相应的OSEventGrp表示等待任务表中的任务组;

3、任务控制块ECU,用来描述诸如信号量、邮箱和消息队列这些事件,其结构如下:

 #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
typedef struct {
    INT8U   OSEventType;                   /* Type of event control block (see OS_EVENT_TYPE_???)      */
    INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */
    INT16U  OSEventCnt;                    /* Semaphore Count (not used if other EVENT type)           */
    void   *OSEventPtr;                    /* Pointer to message or queue structure                    */
    INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */
} OS_EVENT;
#endif

应用程序中的任务通过指针pevent来访问事件控制块;

3、相对这几个事件,消息队列比较复杂,这里主要分析一下消息队列,其由三个部分组成:事件控制块、消息队列和消息。

消息队列相当于一个共用了任务等待列表的消息邮箱数组,事件控制块成员OSEventPtr指向一个叫做队列控制块(QS_Q)的结构,该结构管理一个数组MsgTbl[],该数组中的元素都是一些指向消息指针。


其相关的说明如下:


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值