Черга завдань FreeRTOS зі статичною пам'яттю (xQueueCreateStatic) — мінімальний приклад

Див. також наш попередній пост мінімальний приклад черги завдань FreeRTOS, який також містить приклади відправки та отримання через чергу. Пост, який ви зараз переглядаєте, стосується лише xQueueCreateStatic()

freertos_xqueue_static_example.cpp
enum class MQTTTaskType : uint8_t {
    SendStatus = 0,
    SendInfo
};

// Ця структура буде вставлена в чергу
struct MQTTTask {
    MQTTTaskType task; // Тип роботи, який запитується від отримувача
    // TODO додайте ваші кастомні поля тут, якщо потрібно
};

constexpr size_t MQTT_TASK_QUEUE_LENGTH = 6;
static QueueHandle_t mqttTaskQueue;
static StaticQueue_t mqttTaskQueueStatic;
static uint8_t mqttTaskQueueStorageArea[ MQTT_TASK_QUEUE_LENGTH * sizeof(MQTTTask) ];

void setup() {
    // Створити чергу завдань
    mqttTaskQueue = xQueueCreateStatic( MQTT_TASK_QUEUE_LENGTH,
                                 sizeof(MQTTTask),
                                 mqttTaskQueueStorageArea,
                                 &mqttTaskQueueStatic );
}
freertos_xqueue_static_example.cpp
enum class MQTTTaskType : uint8_t {
    SendStatus = 0,
    SendInfo
};

// Ця структура буде вставлена в чергу
struct MQTTTask {
    MQTTTaskType task; // Тип роботи, який запитується від отримувача
    // TODO додайте ваші кастомні поля тут, якщо потрібно
};

constexpr size_t MQTT_TASK_QUEUE_LENGTH = 6;
static QueueHandle_t mqttTaskQueue;
static StaticQueue_t mqttTaskQueueStatic;
static uint8_t mqttTaskQueueStorageArea[ MQTT_TASK_QUEUE_LENGTH * sizeof(MQTTTask) ];

void setup() {
    // Створити чергу завдань
    mqttTaskQueue = xQueueCreateStatic( MQTT_TASK_QUEUE_LENGTH,
                                 sizeof(MQTTTask),
                                 mqttTaskQueueStorageArea,
                                 &mqttTaskQueueStatic );
}

Дивіться схожі статті за категоріями: C/C++ Вбудовані системи FreeRTOS PlatformIO