#include <Arduino.h>
#include <FreeRTOS.h>
#include <task.h>
int LED1_State = 0, LED2_State = 0;
unsigned long runner = 0;
unsigned long curr1 = 0, curr2 = 0;
#define LED1 13
#define LED2 14
void blinkLED1(void * param)
{
while(1)
{
runner = millis();
if(runner - curr1 == 500)
{
curr1 = runner;
if(LED1_State == 0)
{
LED1_State = 1;
}
else
{
LED1_State = 0;
}
digitalWrite(LED1, LED1_State);
Serial.print("Executed on core: ");
Serial.println(xPortGetCoreID());
}
}
}
void blinkLED2(void * param)
{
while(1)
{
runner = millis();
if(runner - curr2 == 2000)
{
curr2 = runner;
if(LED2_State == 0)
{
LED2_State = 1;
}
else
{
LED2_State = 0;
}
digitalWrite(LED2, LED2_State);
Serial.print("Executed on core: ");
Serial.println(xPortGetCoreID());
}
}
}
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop() {
runner = millis();
initCore0();
initCore1();
// Serial.println("Started...");
}
void initCore0()
{
xTaskCreatePinnedToCore(
blinkLED1, // function name
"LED blinking", // task name
5000, // stack size
NULL, // parameter
1, // priority
NULL, // task handler
0 // core
);
}
void initCore1()
{
xTaskCreatePinnedToCore(
blinkLED2, // function name
"LED blinking", // task name
2000, // stack size
NULL, // parameter
1, // priority
NULL, // task handler
1 // core
);
}