blink_main.c

ESP32-H2 · Fichier : blink_main.c · Langage : C · Usage : Faire clignoter une LED avec un projet ESP-IDF

Le hello-world ESP-IDF sur le H2 : le pilote GPIO et les tâches FreeRTOS remplacent l'Arduino. Le log affiche la mémoire libre à chaque battement, réflexe avant d'empiler les composants radio 802.15.4.

Matériel requis

Une carte ESP32-H2 (RISC-V 96 MHz, radio IEEE 802.15.4 uniquement — pas de Wi-Fi) type DevKitM-1, alimentée par USB. Aucun : LED utilisateur du DevKitM-1/DevKitC-1 (GPIO8) ou LED + 330 Ω.

Branchement

Rien à câbler sur le DevKit ; sinon LED sur GPIO8 via 330 Ω vers GND. Console série sur le port USB-Serial/JTAG (GPIO26/27).

Fonctionnement

app_main est le point d'entrée lancé par le RTOS ; gpio_set_level pilote la broche et vTaskDelay met la tâche en veille 500 ms sans bloquer le scheduler — la base du code ESP-IDF. Programmez avec ESP-IDF (idf.py set-target esp32h2) ; le port USB-Serial/JTAG (GPIO26/27) sert de console et de port de flash. Maintenez Boot + Reset pour le mode download si besoin.

Pour aller plus loin

Passez au LEDC pour une respiration, ou créez deux tâches de priorités différentes pour voir l'ordonnancement FreeRTOS.

blink_main.c

// blink_main.c — projet minimal ESP-IDF v5.x pour ESP32-H2.
// idf.py set-target esp32h2 && idf.py flash monitor
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"

#define BROCHE_LED GPIO_NUM_8      // LED utilisateur de nombreux DevKitC-1

static const char *TAG = "blink";

void app_main(void)
{
    ESP_LOGI(TAG, "Clignotement H2 demarre");
    gpio_reset_pin(BROCHE_LED);
    gpio_set_direction(BROCHE_LED, GPIO_MODE_OUTPUT);

    int n = 0;
    while (1) {
        gpio_set_level(BROCHE_LED, n & 1);
        ESP_LOGI(TAG, "LED %d — heap libre %u", n & 1,
                 (unsigned)xPortGetFreeHeapSize());
        n++;
        vTaskDelay(pdMS_TO_TICKS(500));   // cede le CPU au scheduler
    }
}

← Retour à la fiche