#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"
#include "freertos/queue.h"
// Queue handle for passing strings from Task1 to Task2
QueueHandle_t stringQueue;
// Software timer callback (interrupt handler)
void softwareInterruptHandler(TimerHandle_t xTimer) {
int dataToSend = 42; // Example integer value
xQueueSend(stringQueue, &dataToSend, portMAX_DELAY);
}
// Task1: Receives the integer and passes the string to Task2
void Task1(void *pvParameters) {
int receivedData;
char stringToSend[20]; // Adjust the size as needed
while (1) {
xQueueReceive(stringQueue, &receivedData, portMAX_DELAY);
snprintf(stringToSend, sizeof(stringToSend), "Received: %d", receivedData);
xQueueSend(stringQueue, stringToSend, portMAX_DELAY);
}
}
// Task2: Prints the received string
void Task2(void *pvParameters) {
char receivedString[20]; // Adjust the size as needed
while (1) {
xQueueReceive(stringQueue, receivedString, portMAX_DELAY);
printf("Task2 received: %s\n", receivedString);
}
}
void setup() {
// Create the queue
stringQueue = xQueueCreate(5, sizeof(int));
// Create the software timer
TimerHandle_t xSysMonTimer = xTimerCreate("SysMonTimer", pdMS_TO_TICKS(500), pdTRUE, 0, softwareInterruptHandler);
if (xSysMonTimer != NULL) {
xTimerStart(xSysMonTimer, 0);
}
// Create Task1 and Task2
xTaskCreate(Task1, "Task1", 12048, NULL, 1, NULL);
xTaskCreate(Task2, "Task2", 12048, NULL, 1, NULL);
}
void loop(){
}