Esp32 with FreeRTOS using Arduino - Blink
C FreeRTOS Arduino xTaskCreatePinnedToCore
Table of contents
File FreeRTOS_Esp32_blink.ino
#include "FreeRTOS_Esp32_blink_2.hpp"
// https://forum.arduino.cc/t/esp32-getting-to-the-core-of-the-task/1161303
//
// https://docs.espressif.com/projects/esp-idf/en/v4.3/esp32/api-reference/system/freertos.html
//
// freertos/include/freertos/task.h
//
// BaseType_t xTaskCreatePinnedToCore(
// TaskFunction_t pvTaskCode,
// const char * constpcName,
// const uint32_t usStackDepth,
// void * constpvParameters,
// UBaseType_t uxPriority,
// TaskHandle_t * constpvCreatedTask,
// const BaseType_t xCoreID
// )
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
void setup() {
// Initialize serial communication
Serial.begin(115200);
// Initialize the onboard LED pin
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
TaskFunction_t pvTaskCode = ledTask;
const char * constpcName = "LED Task";
const uint32_t usStackDepth = 2048;
void * constpvParameters = NULL;
UBaseType_t uxPriority = 1;
TaskHandle_t * constpvCreatedTask = &ledTaskHandle;
const BaseType_t xCoreID = 1;
// Create the LED task
xTaskCreatePinnedToCore(
pvTaskCode, // Task function
constpcName, // Task name
usStackDepth, // Stack size
constpvParameters, // Task parameters
uxPriority, // Task priority
constpvCreatedTask, // Task handle
xCoreID // Core number to run the task on (0 or 1)
);
}
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
void loop() {}
Compiling the project
# BOARD?=esp32:esp32:uPesy_wroom
BOARD?= esp32:esp32:esp32da
PORT?= /dev/ttyUSB0
BAUD?= 115200
PROJECT_NAME?=FreeRTOS_Esp32_blink
all:
$(Q)echo "Compiling $(PROJECT_NAME)..."
$(Q)mkdir -p out
$(Q)arduino-cli compile \
--clean \
--fqbn $(BOARD) \
--output-dir out \
$(PROJECT_NAME).ino
$(MAKE) til
$(MAKE) til_copy
clean:
$(RM) -r out
$(RM) -r til
Update config, toolchain, libraries
.PHONY: update
update:
$(Q)echo create config at /home/geraldo/.arduino15/arduino-cli.yaml
$(Q)arduino-cli config init || echo Config file already exists
$(Q)arduino-cli config set network.connection_timeout 600s
$(Q)cat /home/geraldo/.arduino15/arduino-cli.yaml
$(Q)arduino-cli core update-index
$(Q)arduino-cli core install arduino:avr
$(Q)arduino-cli core install esp32:esp32
$(Q)arduino-cli upgrade
Upload binary to the board
.PHONY: upload
upload:
$(Q)arduino-cli upload \
$(shell pwd) \
--input-dir out/ \
--port $(PORT) \
--fqbn $(BOARD) \
--verbose \
--verify
Open serial monitor in another terminal
.PHONY: serial
serial:
$(Q)xfce4-terminal -x picocom $(PORT) \
--baud $(BAUD) \
--echo \
--exit-after 10000