🛠 Zephyr RTOS sur la STM32F4DISCOVERY : west build et west flash

STM32F4DISCOVERY (kit Discovery STM32F407VGT6) · debutant · Schéma : flux de compilation Zephyr pour la carte stm32f4_disco — ligne de commande west build, fichier .elf produit, puis west flash via le ST-LINK/V2-A intégré ; la LED LD4 verte (PD12) clignote sur la carte.

Objetivo

Montar un flujo de desarrollo profesional en la STM32F4DISCOVERY con Zephyr RTOS, que soporta oficialmente la placa bajo el nombre stm32f4_disco. Vas a compilar el ejemplo blinky, flashearlo mediante el ST-LINK/V2-A integrado y comprender por qué la consola serie no funciona por defecto.

Material

Compilación y flasheo

# Une fois l'espace de travail Zephyr installé (west init / west update) :
west build -b stm32f4_disco samples/basic/blinky
west flash

El runner por defecto es STM32CubeProgrammer, que se comunica con el ST-LINK/V2-A de la placa. Alternativas documentadas: west flash --runner openocd (OpenOCD proporciona un archivo de configuración de placa listo para usar, stm32f4discovery.cfg, en SWD con srst_only) o --runner jlink.

El código

/* blinky — build: west build -b stm32f4_disco samples/basic/blinky */
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

#define LED_NODE DT_ALIAS(led0)

int main(void)
{
        const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED_NODE, gpios);

        gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
        while (1) {
                gpio_pin_toggle_dt(&led);
                k_msleep(500);
        }
        return 0;
}

Zephyr utiliza el Device Tree: DT_ALIAS(led0) designa el LED de usuario definido en la descripción de la placa, no un número de pin codificado a mano. Los cuatro LED físicos son LD4 (verde, PD12), LD3 (naranja, PD13), LD5 (rojo, PD14) y LD6 (azul, PD15) — la placa cuenta con ocho en total incluyendo LD1 (USB), LD2 (alimentación 3,3 V) y LD7/LD8 (VBUS/sobretensión OTG).

La consola: la trampa a conocer

Los ajustes serie por defecto de Zephyr son 115200 8N1, pero la documentación de la placa advierte: el puerto serie virtual del ST-LINK no está conectado al puerto serie del chip. Para salida de consola, prevé un cable serie externo en los pines UART2, PA2/PA3. Sin esto, printk se pierde en el vacío — es el punto de confusión n.º 1 de los principiantes con esta placa.

Verificación esperada

Tras west flash, el LED parpadea a 1 Hz (500 ms ON / 500 ms OFF) y el comando muestra Halting target CPU... seguido de Successfully programmed. La placa funciona a 168 MHz (reloj del sistema configurado desde el cristal HSE de 8 MHz mediante la configuración de la placa).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales