事件位
事件位用来表明某个事件是否发生, 事件位通常用作事件标志。
事件组
一个事件组就是一组的事件位, 事件组中的事件位通过位编号来访问。
事件API函数
创建事件标志组:
设置事件位:
获取事件标志组:
等待指定的事件位
实验
通过按键设置两个事件位
key = KEY_Scan(0);
switch(key)
{
case KEY1_PRES:
printf("bit1 set 1\r\n");
xEventGroupSetBits(EventGroupHandle, EVENTBIT_1);
break;
case KEY2_PRES:
printf("bit2 set 1\r\n");
xEventGroupSetBits(EventGroupHandle, EVENTBIT_2);
break;
}
事件位
#define EVENTBIT_0 (1<<0) //事件位
#define EVENTBIT_1 (1<<1)
#define EVENTBIT_2 (1<<2)
#define EVENTBIT_ALL (EVENTBIT_1|EVENTBIT_2)
eventgroup_task函数
//eventgroup_task函数
void eventgroup_task(void *pvParameters)
{
EventBits_t EventValue;
while(1)
{
if(EventGroupHandle != NULL)
{
EventValue = xEventGroupWaitBits((EventGroupHandle_t) EventGroupHandle,
(EventBits_t) EVENTBIT_ALL,
(BaseType_t )pdTRUE,
(BaseType_t )pdFALSE,
(TickType_t )portMAX_DELAY );
printf("ALL bit set 1 EventValue = %x!\r\n", EventValue);
}
}
}
当参数xWaitForAllBits
设置为时pdTRUE
时:
当参数xWaitForAllBits
设置为时pdFALSE
时: