24小时咨询热线

+86 0000 88888

餐厅展示

Restaurant display
您的位置: 主页 > 餐厅展示

‘雷速体育下载app’uCOSII之事件控制块学习

发布日期:2025-01-28 12:00浏览次数:
本文摘要:一。

一。事件掌控块ECB数据结构:  typedefstruct  {  INT8UOSEventType;//事件类型  INT8UOSEventGrp;//等候任务所在的两组  INT16UOSEventCnt;//当事件是信号量时的计数器  void*OSEventPtr;//指向消息或消息队列的指针  INT8UOSEventTbl[OS_EVENT_TBL_SIZE];//等候任务列表  }OS_EVENT;  二.关键算法:  1、将一个任务放入到等候事件的任务列表中:  当调用函数OS_EventTaskWait()使一个任务转入等候某事件再次发生时,必须此算法,从而将任务放入到等候事件的任务列表中。

  pevent-》OSEventGrp|=OSMapTbl[prio》》3];  pevent-》OSEventTbl[prio》》3]=OSMapTbl[prio0x07];  2、从等候事件的任务列表中使任务瓦解等候状态:  当调用函数OS_EventTaskRdy()使一个任务转入准备就绪态时,必须调用此算法,从而使等候的任务瓦解等候状态转入准备就绪。  if((pevent-》OSEventTbl[prio》》3]=~OSMapTbl[prio0x07])==0)  {  pevent-》OSEventGrp=~OSMapTbl[prio》》3];  }  3、在等候事件的任务列表中查询优先级最低的任务:  当调用函数OS_EventTaskRdy()使一个任务转入准备就绪态时,必须调用此算法,从而首先找到在等候事件任务列表中最低优先级的任务转入准备就绪状态。

  y=OSUnMapTbl[pevent-》OSEventGrp];  x=OSUnMapTbl[pevent-》OSEventTbl[y];  prio=(y《《3)+x;  三.对事件掌控块ECB的基本操作  1、初始化一个事件掌控块:  函数OSSemCreate(),OSMutexCreate(),OSMboxCreate(),OSQCreate()创建时,必需调用此函数展开初始化,初始化一个机的等候列表,表中没任何等候事件的任务。  OS_EventWaitListInit();  2、使一个任务转入准备就绪态:  当某个事件再次发生了时,要将事件等候任务列表中最低优先级的任务转入准备就绪态,函数OSSemPost,OSMutexPost(),OSMboxPost(),OSQPost()终将调用此函数从而使一个任务转入准备就绪态。  OS_EventTaskRdy();  3、使一个任务转入等候某事件再次发生:  当某个任务需等候一个事件的再次发生时,信号量、物理地址型信号量、邮箱、消息队列不会通过适当的PEND函数来调用这个函数。

  OS_EventTaskWait();  4、由于等候超时而将任务置为准备就绪态:  如果在预先指定的等待时间内任务等候的事件没再次发生,那么PNED类型函数将不会调用此函数从而将等候超时的任务转入准备就绪态。  OS_EventTo();  四.事件掌控块ECB基本操作代码的分析。  1、OS_EventWaitListInit();  voidOS_EventWaitListInit(OS_EVENT*pevent)  {  INT8U*ptbl;//定义指针变量ptbl  pevent-》OSEventGrp=0x00;//清理任务所在的两组  OS_EVENT_TBL_SIZE在UCOS_II.H中定义大小  ptbl=pevent-》OSEventTbl[0];  #ifOS_EVENT_TBL_SIZE》0  *ptbl++=0x00;//清理等候任务列表,在这里没用于for循环是为了节省系统支出  #endif  #ifOS_EVENT_TBL_SIZE》1  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》2  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》3  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》4  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》5  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》6  *ptbl++=0x00;  #endif  #ifOS_EVENT_TBL_SIZE》7  *ptbl++=0x00;  #endif  }  2、OS_EventTaskRdy();  INT8UOS_EventTaskRdy(OS_EVENT*pevent,void*msg,INT8Umsk)  {  OS_TCB*ptcb;  INT8Ux;  INT8Uy;  按照关键算法3,在等候事件的任务列表中寻找优先级最低的任务,并确认其优先级。


本文关键词:雷速体育下载app,雷速体育下载app最新版V7.24.568,雷速体育下载app(官方)APP下载安装IOS/登录入口/手机app

本文来源:雷速体育下载app-www.gosweekly.com

网站地图