《嵌入式操作系统原理与面向任务程序设计》课件第三讲M.ppt
**********************************************************1#if(OS_FLAG_EN0)(OS_MAX_FLAGS0)23#ifOS_FLAGS_NBITS==84typedefINT8UOS_FLAGS;5#endif67#ifOS_FLAGS_NBITS==168typedefINT16UOS_FLAGS;9#endif103.9.1事件标志组相关变量类型11#ifOS_FLAGS_NBITS==3212typedefINT32UOS_FLAGS;#endif1415typedefstructos_flag_grp{16INT8UOSFlagType;17void*OSFlagWaitList;18OS_FLAGSOSFlagFlags;19#ifOS_FLAG_NAME_SIZE120INT8UOSFlagName[OS_FLAG_NAME_SIZE];21#endif22}OS_FLAG_GRP;2324typedefstructos_flag_node{25void*OSFlagNodeNext;26void*OSFlagNodePrev;27void*OSFlagNodeTCB;28void*OSFlagNodeFlagGrp;29OS_FLAGSOSFlagNodeFlags;30INT8UOSFlagNodeWaitType;31}OS_FLAG_NODE;32#endif1voidOS_FlagInit(void)2{3#ifOS_MAX_FLAGS==14OSFlagFreeList=(OS_FLAG_GRP*)OSFlagTbl[0];5OSFlagFreeList-OSFlagType=OS_EVENT_TYPE_UNUSED;6OSFlagFreeList-OSFlagWaitList=(void*)0;7OSFlagFreeList-OSFlagFlags=(OS_FLAGS)0;8#ifOS_FLAG_NAME_SIZE19OSFlagFreeList-OSFlagName[0]=?;10OSFlagFreeList-OSFlagName[1]=OS_ASCII_NUL;3.9.2初始化事件标志组11#endif#endif1314#ifOS_MAX_FLAGS=215INT16Ui;16OS_FLAG_GRP*pgrp1;17OS_FLAG_GRP*pgrp2;181920OS_MemClr((INT8U*)OSFlagTbl[0],sizeof(OSFlagTbl));21pgrp1=OSFlagTbl[0];22pgrp2=OSFlagTbl[1];23for(i=0;i(OS_MAX_FLAGS