使用静态内存的 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 );
}

Check out similar posts by category: C/C++, Embedded, FreeRTOS, PlatformIO