在Z-STACK中有个系统抽象层,其中main函数中的代码如下 
 
do { 
      if (tasksEvents[idx])  // Task is highest priority that is ready. 
      { 
        break; 
      } 
    } while (++idx < tasksCnt); 
 
    if (idx < tasksCnt) 
    { 
      uint16 events; 
      halIntState_t intState; 
 
      HAL_ENTER_CRITICAL_SECTION(intState); 
      events = tasksEvents[idx]; 
      tasksEvents[idx] = 0;  // Clear the Events for this task. 
      HAL_EXIT_CRITICAL_SECTION(intState); 
 
      events = (tasksArr[idx])( idx, events ); 
 
      HAL_ENTER_CRITICAL_SECTION(intState); 
      tasksEvents[idx] |= events;  // Add back unprocessed events to the current task. 
      HAL_EXIT_CRITICAL_SECTION(intState); 
    } 
 
求教下高手,tasksEvents[idx]用于捕获事件,那么事件中是如何被捕获的?如果说捕获事件后,进入相关任务的处理函数,我还能兴许明白事件的捕获,在相关的处理函数中,osal_set_event( destination_task, SYS_EVENT_MSG ); 大多都调用了事件的捕获,并把tasksEvents这个指针的里面包含的内容加了标记位,也就是非0了。但是在初始化后,tasksEvents里面的内容清0,如果我要捕获一个事件,它又从哪里置位呢?求大神指导下。举个例子也行,网上的资料别贴,我看了大部分了。 
 
{ 
        tasksEvents[task_id] |= event_flag; 
  }转载 |