🛠 Migrer un projet mbed Nucleo-F4 en 2026 : Mbed CE, Zephyr ou CubeIDE
Objetivos
Tú (o un tutorial que estés siguiendo) creaste un proyecto Nucleo-F4 en la plataforma en línea mbed. Esa plataforma ya no existe: los servicios en línea de mbed fueron descontinuados en julio de 2026 y Mbed OS ya no es mantenido activamente por Arm. Este tutorial mapea las opciones de migración — Mbed CE, Zephyr, STM32CubeF4/CubeIDE — y porta un clásico blinky de mbed a cada destino.
Por qué esto es importante
La línea Nucleo se lanzó en febrero de 2014 con el soporte del IDE mbed como una característica destacada (ST se unió a mbed en diciembre de 2013). Una década de tutoriales de Nucleo, código de ejemplo y publicaciones en blogs asumen la existencia del sitio web de mbed. Nada de eso funciona como está escrito actualmente.
Opción A — Mbed CE (cambios mínimos)
El fork comunitario mbed-ce/mbed-os (github.com/mbed-ce/mbed-os) continúa con Mbed OS. Tu código DigitalOut/Serial sobrevive; la cadena de herramientas pasa del sitio web inactivo a mbed CLI y compilaciones locales.
// mbed CE — compiles essentially unchanged from the old online project
#include "mbed.h"
DigitalOut led(LED1); // LED1 = LD2 = PA5 on Nucleo boards
int main {
while (true) {
led = !led;
This::wait(500ms);
}
}
Opción B — Zephyr (placa integrada, soporte a largo plazo)
nucleo_f401re es una placa Zephyr integrada en el árbol de fuentes. El DigitalOut led(LED1) de mbed se convierte en una búsqueda de alias en el árbol de dispositivos:
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(DT_ALIAS(led0), gpios);
int main(void) {
gpio_pin_configure_dt(&led, GPIO_OUTPUT_INACTIVE);
while (1) { gpio_pin_toggle_dt(&led); k_msleep(500); }
}
Compilación: west build -b nucleo_f401re <app>; flasheo: west flash (el ejecutor STM32CubeProgrammer es el predeterminado, OpenOCD o J-Link también funcionan a través del ST-LINK integrado).
Opción C — STM32CubeF4 / CubeIDE
El paquete de ST incluye proyectos para el STM32F401RE-Nucleo; clona con --recursive y regenera la configuración de pines en CubeMX. Este es también el camino si necesitas el middleware con licencia (STemWin, TouchGFX, STM32_Audio) — disponible mediante clic, solo desde st.com con una cuenta.
Lista de verificación de migración
- Exporta y archiva el código fuente del proyecto antiguo antes de que más enlaces se rompan.
- Reemplaza el manejo de tiempos:
Ticker/Timeoutde mbed →k_work_delayable/hilos de Zephyr, o temporizadores HAL. - Reemplaza
Serial pc(USBTX, USBRX)→ USART2 en PA2/PA3, el VCP del ST-LINK (el núcleo de Arduino lo llama simplementeSerial). - Vuelve a verificar el presupuesto de memoria por variante: el F401RE tiene 512 KB de flash / 96 KB de SRAM, pero el F410RB solo 128 KB / 32 KB — un binario que cabía en el F401 puede no caber en su hermano menor.
Resultado esperado
El mismo latido de LD2 en una cadena de herramientas mantenida, con un mapeo escrito para cada API de mbed que tu proyecto utilizaba.
Errores comunes
- Seguir tutoriales que aún enlazan a las páginas del compilador de os.mbed.com — ahora son avisos de descontinuación.
- Asumir que Mbed OS upstream está vivo: no lo está; quédate en el fork Mbed CE si mantienes esa API.
- Portar a Zephyr y codificar rígidamente PA5 en lugar de usar el alias
led0del árbol de dispositivos — pierdes la portabilidad de placa que hizo que la portabilidad valiera la pena.
Otros tutoriales para esta placa
- Prise en main de la Nucleo-F401RE : ST-LINK, LED LD2 et alimentation
- Premier Blink Arduino sur la Nucleo-F401RE avec le core STM32duino
- Console série sur le ST-LINK VCP : printf, ADC 12 bits et piège du USB
- STM32CubeF4 et HAL : blink + UART printf générés pour la Nucleo-F401RE
- ADC 12 bits et PWM sur la Nucleo-F401RE : oversampling, millivolts et LED en fondu
- Zephyr RTOS sur la Nucleo-F401RE : west build, devicetree et west flash