In FreeRTOS kannst du Message Buffers verwenden, um Daten zwischen Tasks auszutauschen. Hier ist ein einfaches Beispiel, das zeigt, wie du einen Message Buffer erstellen und verwenden kannst. ```c #include <stdio.h> #include "FreeRTOS.h" #include "task.h" #include "message_buffer.h" #define BUFFER_SIZE 100 // Message Buffer Handle MessageBufferHandle_t xMessageBuffer; // Task Prototypen void vSenderTask(void *pvParameters); void vReceiverTask(void *pvParameters); int main(void) { // Initialisiere den Message Buffer xMessageBuffer = xMessageBufferCreate(BUFFER_SIZE); // Erstelle die Tasks xTaskCreate(vSenderTask, "Sender", configMINIMAL_STACK_SIZE, NULL, 1, NULL); xTaskCreate(vReceiverTask, "Receiver", configMINIMAL_STACK_SIZE, NULL, 1, NULL); // Starte den Scheduler vTaskStartScheduler(); // Sollte nie hierher gelangen for (;;); } void vSenderTask(void *pvParameters) { const char *pcMessage = "Hello from Sender!"; size_t xBytesSent; for (;;) { // Sende eine Nachricht xBytesSent = xMessageBufferSend(xMessageBuffer, (void *)pcMessage, strlen(pcMessage) + 1, portMAX_DELAY); if (xBytesSent > 0) { printf("Sent: %s\n", pcMessage); } vTaskDelay(pdMS_TO_TICKS(1000)); // Warte 1 Sekunde } } void vReceiverTask(void *pvParameters) { char pcReceivedMessage[BUFFER_SIZE]; size_t xBytesReceived; for (;;) { // Empfange eine Nachricht xBytesReceived = xMessageBufferReceive(xMessageBuffer, pcReceivedMessage, sizeof(pcReceivedMessage), portMAX_DELAY); if (xBytesReceived > 0) { printf("Received: %s\n", pcReceivedMessage); } } } ``` In diesem Beispiel wird ein Message Buffer mit einer Größe von 100 Bytes erstellt. Die `vSenderTask` sendet eine Nachricht an den Buffer, während die `vReceiverTask` die Nachricht empfängt und ausgibt. Die Tasks laufen in einer Endlosschleife und verwenden `vTaskDelay`, um die CPU nicht zu überlasten.