包含#include "freertos/event_groups.h"。不能 中断里使用,标志满足解除任务阻塞。
#define BIT_0 (1 << 0)
#define BIT_4 (1 << 4)
EventGroupHandle_t xCreatedEventGroup; // 创建一个
void vTaskCode1(void *pvParam) // 任务
{
while (1)
{
printf("----------!\n");
printf("vTaskCode1 wait \n");
xEventGroupWaitBits(
xCreatedEventGroup, // 创建好的事件组
BIT_0 | BIT_4, // 指定事件组的位
pdTRUE, // 自动清除
pdTRUE, // pdFALSE或。真为与
portMAX_DELAY); // 位完成设置的最大时间
printf("vTaskCode1 bitp or bit4 \n");//and
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
}
void vTaskCode2(void *pvParam) // 任务
{
vTaskDelay(1000 / portTICK_PERIOD_MS);
while (1)
{
printf("set bit0 \n");
xEventGroupSetBits(xCreatedEventGroup, BIT_0);
vTaskDelay(5000 / portTICK_PERIOD_MS);
printf("set bit4 \n");
xEventGroupSetBits(xCreatedEventGroup, BIT_4);
vTaskDelay(5000 / portTICK_PERIOD_MS);
}
}
void app_main(void)
{
xCreatedEventGroup = xEventGroupCreate();
/* Was the event group created successfully? */
if (xCreatedEventGroup == NULL)
{
printf("Group no\n");
}
else
{
vTaskSuspendAll();
xTaskCreate(vTaskCode1, // 任务函数
"task1", // 名字
4096, // 分配内存
NULL, // 传参数
2, // 任务优先级
NULL); // 句柄
xTaskCreate(vTaskCode2, "task2", 4096, NULL, 3, NULL);
xTaskResumeAll();
}
}