/***************************************************************
* Exemplos para criação de tasks
* Esse exemplço exibe como criar tarefas no FreeRTOS
* Por: Fábio Souza
***************************************************************/
/*Biblioteca do Arduino*/
#include <Arduino.h>
/*Bibliotecas FreeRTOS */
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
/*mapeamento de pinos*/
#define LED 0
/* Variáveis para armazenamento do handle das tasks*/
TaskHandle_t taks1Handle = NULL;
TaskHandle_t taks2Handle = NULL;
TaskHandle_t taks3Handle = NULL;
/*protítipos das Tasks*/
void vTask1(void *pvParameters);
void vTask2(void *pvParameters);
void vTask3(void *pvParameters);
/*função setup*/
void setup() {
pinMode(LED,OUTPUT);
Serial.begin(115200); //configura comunicação serial com baudrate de 9600
/*criação das tasks*/
xTaskCreate(vTask1,"TASK1",configMINIMAL_STACK_SIZE+1024,NULL,5,&taks1Handle);
xTaskCreate(vTask2,"TASK2",configMINIMAL_STACK_SIZE+1024,NULL,2,&taks2Handle);
xTaskCreate(vTask3,"TASK3",configMINIMAL_STACK_SIZE+1024,NULL,3,&taks3Handle);
vTaskDelay(3000); //libera a CPU por 3 seg
}
/*função loop*/
void loop() {
}
/*
vTask1
inverte LED em intervalos de 200 ms
*/
void vTask1(void *pvParameters)
{
while (1)
{
digitalWrite(LED,!digitalRead(LED));
vTaskDelay(pdMS_TO_TICKS(250));
}
}
/*
vTask2
*/
void vTask2(void *pvParameters)
{
while (1)
{
Serial.println("Msg da Task 2: ");
vTaskDelay(pdMS_TO_TICKS(400));
}
}
/*
vTask3
*/
void vTask3(void *pvParameters)
{
while (1)
{
Serial.println("Msg da Task 3: ");
vTaskDelay(pdMS_TO_TICKS(600));
}
}