ucos2中OSEventTbl[]数组,里面到底是放的是什么值。
ucos2中OSEventTbl[]数组在OS_EVENT结构体中为整形的数组:typedefstruct{INT8UOSEventType;INT8UOSEventGr...
ucos2中OSEventTbl[]数组
在OS_EVENT结构体中为整形的数组:
typedef struct {
INT8U OSEventType;
INT8U OSEventGrp;
INT16U OSEventCnt;
void *OSEventPtr;
INT8U OSEventTbl[OS_EVENT_TBL_SIZE];
} OS_EVENT;
但是又会出现
0S_EVENT *pevent1; pevent1 = &OSEventTbl[0];这种赋值,其用法和任务里面的&OSTCBTbl[0]相似,里面存放的到底是什么东西? 展开
在OS_EVENT结构体中为整形的数组:
typedef struct {
INT8U OSEventType;
INT8U OSEventGrp;
INT16U OSEventCnt;
void *OSEventPtr;
INT8U OSEventTbl[OS_EVENT_TBL_SIZE];
} OS_EVENT;
但是又会出现
0S_EVENT *pevent1; pevent1 = &OSEventTbl[0];这种赋值,其用法和任务里面的&OSTCBTbl[0]相似,里面存放的到底是什么东西? 展开
1个回答
2011-11-07
展开全部
因为uCos中采用的是静态链表,所以才有各种数组的存在,在OS_CFG.h 中可以配置最大的OS_MAX_EVENTS数目。在编译的时候,就建立了
OS_EVENT OSEventTbl[OS_MAX_EVENTS];/* Table of EVENT control blocks
等到你要用的时候就从已经建立的事件数组中取出一个,这个是事件控制块,包含了很多的参数,至于OS_EVENT结构体中的 OSEventTbl[]是存储了等待这个事件的任务的标志位,是以位图的形式保存,每个优先级在这个数组中占有1为,是等待则为1 没否则为0,这2个数组是名字一样,但是表示的意义是不一样的,OSTCB[]也是因为采用了静态链表,就像你到银行去办卡,银行的工作人员会给你一张表格,事先他们已经印好了很多表格(就像编译的时候建立了数组,里面有很多OSTCB结构体),你要用的时候就取一个,但是不能超过最大限度。祝你进步!
OS_EVENT OSEventTbl[OS_MAX_EVENTS];/* Table of EVENT control blocks
等到你要用的时候就从已经建立的事件数组中取出一个,这个是事件控制块,包含了很多的参数,至于OS_EVENT结构体中的 OSEventTbl[]是存储了等待这个事件的任务的标志位,是以位图的形式保存,每个优先级在这个数组中占有1为,是等待则为1 没否则为0,这2个数组是名字一样,但是表示的意义是不一样的,OSTCB[]也是因为采用了静态链表,就像你到银行去办卡,银行的工作人员会给你一张表格,事先他们已经印好了很多表格(就像编译的时候建立了数组,里面有很多OSTCB结构体),你要用的时候就取一个,但是不能超过最大限度。祝你进步!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询