#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu = 0;
#else
static const BaseType_t app_cpu = 1;
#endif
// global variables
volatile uint16_t delay_time = 150;
// pins
static const uint8_t pin_led = 32;
// task
static TaskHandle_t task_blinky = NULL;
void blinky_led (void* parameter);
void uart_set_speed (void* parameter);
void setup () {
Serial.begin(115200);
pinMode(pin_led, OUTPUT);
vTaskDelay(1000 / portTICK_PERIOD_MS);
Serial.println("set blink delay (ms): ");
xTaskCreatePinnedToCore(blinky_led, "blinky_led0", 1024, NULL, 2, &task_blinky, app_cpu);
xTaskCreatePinnedToCore(uart_set_speed, "uart_set_speed0", 1024, NULL, 1, NULL, app_cpu);
vTaskDelete(NULL);
}
void loop () {}
void blinky_led (void* parameter) {
while (1) {
digitalWrite(pin_led, digitalRead(pin_led)^1);
vTaskDelay(delay_time / portTICK_PERIOD_MS);
}
}
void uart_set_speed (void *parameter) {
while (1) {
if (Serial.available() > 0) {
// vTaskSuspend(task_blinky);
String data = Serial.readString();
Serial.print("(read) ");
Serial.println(data);
delay_time = data.toInt();
// vTaskResume(task_blinky);
}
}
}