1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include <Arduino.h>
typedef struct Message { portSTACK_TYPE id; } Message_t;
xQueueHandle task1Queue;
void vTask1(void *pvParameters); void vTask2(void *pvParameters);
void setup() { task1Queue = xQueueCreate(5, sizeof(Message_t));
xTaskCreate(&vTask1, "Task 1", 2048, NULL, 1, NULL); xTaskCreate(&vTask2, "Task 2", 2048, NULL, 1, NULL); }
void loop() { }
void vTask1(void *pvParameters) { Message_t rcvMessage;
for (;;) { if (xQueueReceive(task1Queue, &rcvMessage, 1000)) { printf("Task 1 rcv=%d from Task 2\n", rcvMessage.id); } } }
void vTask2(void *pvParameters) { Message_t sendMessage; portSTACK_TYPE id = 0;
for (;;) { sendMessage.id = id++; xQueueSend(task1Queue, &sendMessage, 1000);
vTaskDelay(pdMS_TO_TICKS(1000)); } }
|