Див. також наш попередній пост мінімальний приклад черги завдань 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
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow