//#include <FreeRTOS.h>
#define BUTTON 1
#define LED 4
SemaphoreHandle_t sem;
void task_led(void *params) {
uint8_t level = HIGH;
pinMode(LED, OUTPUT);
digitalWrite(LED, level);
for (;;) {
xSemaphoreTake(sem, portMAX_DELAY);
Serial.println(level);
digitalWrite(LED, level);
if (level == LOW) {
level = HIGH;
} else {
level = LOW;
}
}
}
void task_button(void *params) {
pinMode(BUTTON, INPUT);
for (;;) {
if (digitalRead(BUTTON) == LOW) {
while (digitalRead(BUTTON) == LOW) {
vTaskDelay(100/portTICK_PERIOD_MS);
}
xSemaphoreGive(sem);
}
vTaskDelay(10/portTICK_PERIOD_MS);
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Boot");
sem = xSemaphoreCreateBinary();
xTaskCreatePinnedToCore(task_led, "LED", 1000, NULL, 1, NULL, xPortGetCoreID());
xTaskCreatePinnedToCore(task_button, "BUTTON", 1000, NULL, 1, NULL, xPortGetCoreID());
}
void loop() {
vTaskDelay(1000/portTICK_PERIOD_MS);
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1