В ESP32 можно создать процесс FreeRTOS при помощи функции xTaskCreatePinnedToCore()
void myFunction(void* arg) {
while(true) { // По завершению функции процесс не будет вызван повторно
digitalWrite(LED_BUILTIN, 0);
vTaskDelay(1000); // vTaskDelay передает процессороное время другим задачам
digitalWrite(LED_BUILTIN, 1);
vTaskDelay(1000);
}
}
TaskHandle_t myTask;
xTaskCreatePinnedToCore(
myFunction /* Функция, выполняемая процессом */
"Name", /* Имя для процесса, нужно для отладки */
1024, /* Размер стэка в словах (по 4 байта), не менее 1024 */
NULL, /* Указатель на параметр для функции */
0, /* Приоритет процесса */
&myTask, /* В переменную будет сохранен идентификатор процесса */
0); /* Исполняющее ядро (0 или 1), только 0 для одноядерных*/
vTaskDelete(myTask); // Можно удалить задачу по её идентификатору