🛠 Zephyr RTOS sur la Nucleo-F401RE : west build, devicetree et west flash

Famille STM32 Nucleo-64 F4 — modelo insignia: Nucleo-F401RE · intermediaire · Schéma : IMG-stm32f4-nucleo-intermediaire-6-stm32f4nuc-zephyr-blinky-ouest.svg — fenêtre de terminal exécutant west build -b nucleo_f401re puis west flash vers la Nucleo, console série ttyACM0 affichant Hello World

Objetivos

Compilar y flashear Zephyr RTOS en la placa Nucleo-F401RE. La placa es un objetivo nativo de Zephyr (nucleo_f401re) mantenido en la rama main, y la documentación oficial de la placa explica cómo ejecutar west build -b nucleo_f401re samples/hello_world + west flash, con la salida en /dev/ttyACM0. Dado que el LED proviene del devicetree de la placa, el mismo código de parpadeo funciona en cualquier placa Nucleo.

Hardware

Pasos

  1. Crea un espacio de trabajo de Zephyr e inicializa la rama main (el YAML de la placa declara 96 KiB de RAM / 512 KiB de flash).
  2. Compila el ejemplo: west build -b nucleo_f401re samples/hello_world
  3. Flashea: west flash — el ejecutor por defecto es el ejecutor de STM32CubeProgrammer; los ejecutores de OpenOCD y J-Link también funcionan, todos controlando el ST-LINK integrado a través de SWD.
  4. Abre /dev/ttyACM0 (Linux) o el puerto COM del ST-LINK (Windows) a 115200 baudios.

Código (parpadeo controlado por devicetree)

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

/* led0 = LD2 = PA5 comes from the board DTS, not from this file */
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);

int main(void)
{
    if (!gpio_is_ready_dt(&led)) return -1;
    gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);

    while (1) {
        gpio_pin_toggle_dt(&led);
        k_msleep(500);              /* RTOS sleep, not busy-wait */
    }
    return 0;
}

Compílalo con west build -b nucleo_f401re samples/basic/blinky.

Por qué Zephyr en esta placa

Resultado esperado

hello_world imprime Hello World! nucleo_f401re en la consola serie; blinky pulsa LD2 cada 500 ms. Mismo código, misma línea de comandos, cualquier placa Nucleo-64 — solo cambia el objetivo -b.

Errores comunes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales