blink_main.c
El hello-world ESP-IDF en el H2: el driver GPIO y las tareas FreeRTOS sustituyen a Arduino. El log imprime memoria libre en cada parpadeo, el reflejo antes de apilar componentes de radio 802.15.4.
Hardware necesario
Una placa ESP32-H2 (RISC-V a 96 MHz, radio IEEE 802.15.4 solo — sin Wi-Fi) tipo DevKitM-1, alimentada por USB. Ninguno: LED de usuario del DevKitM-1/DevKitC-1 (GPIO8) o LED + 330 Ω.
Cableado
Nada que cablear en el DevKit; si no, LED en GPIO8 por 330 Ω a GND. Consola serie en el puerto USB-Serial/JTAG (GPIO26/27).
Funcionamiento
app_main es el punto de entrada lanzado por el RTOS; gpio_set_level controla el pin y vTaskDelay duerme la tarea 500 ms sin bloquear el scheduler — la base del código ESP-IDF. Prográmelo con ESP-IDF (idf.py set-target esp32h2); el puerto USB-Serial/JTAG (GPIO26/27) sirve de consola y puerto de flash. Mantenga Boot + Reset para modo download si hace falta.
Para ir más lejos
Pase a LEDC para una respiración, o cree dos tareas con prioridades distintas para ver la planificación 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
}
}