包含#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();

    }

}

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐