事件组数据结构
可以看到事件组结构体比队列占用资源少多了
等待事件组
step1.关调度器
step2.判断uxEventBits是否满足条件,满足step3
不满足
uxBitsToWaitFor==0,开调度器,返回ERR
uxBitsToWaitFor!=0,用xTasksWaitingForBits列表记录当前TCB,并把当前TCB从xReadyTasksLists移调到xDelayedTaskList
step3.判断是否要清除事件标志
setp4.开调度器
设置事件组
step1.关调度器
step2.唤醒xTasksWaitingForBits列表上所有满足条件的任务,即把所有满足条件的任务从xDelayedTaskList移调到xReadyTasksLists
step3.开调度器
中断中设置事件组
如下
可以看到中断中设置事件组本质是向xTimerQueue队列发消息,由timer任务来接收消息,在timer任务中调用xEventGroupSetBits来设置事件。(但是调用xQueueSendFromISR关了中断)