STM32: Guía Maestra de Pinout, Nucleo Boards, Programación y Aplicaciones
La familia STM32 (STMicroelectronics) es el estándar de facto en microcontroladores ARM Cortex-M de 32 bits para embebidos profesionales, industriales, automotrices, médicos e IoT. Con cientos de referencias (STM32F0/F1/F2/F3/F4/F7/G0/G4/H7/L0/L1/L4/L5/U0/U5/WB/WL), cubren desde 24 MHz Cortex-M0+ ultra-low-power hasta 600 MHz Cortex-M7 con DSP/FPU, gráficos, crypto, y conectividad avanzada. Las placas Nucleo (Nucleo-64, Nucleo-144, Nucleo-32) son plataformas de evaluación oficiales, bajo coste ($10-30), compatibles Arduino (headers) y mbed, con ST-LINK/V2-1 onboard para depuración/programación SWD/JTAG. Esta guía cubre el pinout típico Nucleo-F401RE (Cortex-M4 @ 84 MHz), specs, programación, y ecosistema.
STM32 Nucleo-F401RE: Visión General
- MCU: STM32F401RET6 (LQFP64). Cortex-M4F @ 84 MHz (FPU single precision, DSP instructions).
- Memoria: 512 KB Flash, 96 KB SRAM.
- Alimentación: VIN 7-15 V (regulador LDO onboard 3.3 V, 500 mA), 5 V (USB/ST-LINK), 3.3 V (directo, bypass LDO). VDD MCU: 1.7-3.6 V.
- Clock: HSE 8 MHz (cristal onboard), HSI 16 MHz (interno), PLL hasta 84 MHz. LSE 32.768 kHz (cristal RTC, opcional no soldado).
- Depuración: ST-LINK/V2-1 onboard (SWD + Virtual COM Port UART). Jumper CN2 para aislar ST-LINK y usar MCU standalone.
- LEDs: LD1 (COM/USB), LD2 (User, PA5, Verde), LD3 (PWR, 3.3 V).
- Botones: B1 (USER, PC13), B2 (RESET, NRST).
- Conectores: CN5-CN6-CN8-CN9 (Arduino Uno R3 headers, hembra), CN7-CN10 (Morpho, macho, 2×19 pines, todos los pines MCU).
- USB: Micro-USB (ST-LINK + MCU USB FS Device/OTG).
Pinout: Arduino Headers (CN5, CN6, CN8, CN9) – Compatibilidad Uno R3
Mapeo directo a pines Arduino (D0-D15, A0-A5, Power, ICSP). Permite usar shields Arduino directamente (con limitaciones: 3.3 V lógica, corriente limitada 3.3 V rail, pines 5 V tolerantes solo FT/FTf).
| Arduino Pin | STM32 Pin | Funciones Principales (Alternate Functions) |
|---|---|---|
| D0 (RX) | PA3 | USART2_RX, TIM2_CH4, ADC1_IN3 |
| D1 (TX) | PA2 | USART2_TX, TIM2_CH3, ADC1_IN2 |
| D2 | PA10 | USART1_RX, TIM1_CH3, USB_FS_DM |
| D3 (PWM) | PB3 | SPI1_SCK, TIM2_CH2, SPI3_SCK, JTDO |
| D4 | PB5 | SPI1_MOSI, I2C1_SMBA, TIM3_CH2, SPI3_MOSI, JTD1 |
| D5 (PWM) | PB4 | SPI1_MISO, TIM3_CH1, SPI3_MISO, JTRST |
| D6 (PWM) | PB10 | I2C2_SCL, USART3_TX, TIM2_CH3 |
| D7 | PA8 | USART1_CK, TIM1_CH1, MCO, USB_FS_SOF |
| D8 | PA9 | USART1_TX, TIM1_CH2, USB_FS_VBUS |
| D9 (PWM) | PC7 | TIM3_CH2, I2S3_MCK |
| D10 (PWM/SS) | PB6 | I2C1_SCL, USART1_TX, TIM4_CH1 |
| D11 (PWM/MOSI) | PA7 | SPI1_MOSI, TIM3_CH2, TIM1_CH1N, ADC1_IN7 |
| D12 (MISO) | PA6 | SPI1_MISO, TIM3_CH1, TIM1_BKIN, ADC1_IN6 |
| D13 (SCK) | PA5 | SPI1_SCK, TIM2_CH1, ADC1_IN5 |
| A0 | PA0 | ADC1_IN0, TIM2_CH1_ETR, USART2_CTS, WKUP |
| A1 | PA1 | ADC1_IN1, TIM2_CH2, USART2_RTS |
| A2 | PA4 | ADC1_IN4, SPI1_NSS, SPI3_NSS, USART2_CK, DAC1_OUT1 |
| A3 | PB0 | ADC1_IN8, TIM3_CH3, TIM1_CH2N |
| A4 (SDA) | PC1 / PB9 | I2C1_SDA (PC1) / I2C1_SDA (PB9) – Check jumper SB13/SB14 |
| A5 (SCL) | PC0 / PB8 | I2C1_SCL (PC0) / I2C1_SCL (PB8) – Check jumper SB13/SB14 |
Pines 5V tolerantes (FT/FTf): PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, PD0, PD1, PD2. Ver datasheet Table 9: "FT" = 5V tolerant, "FTf" = 5V tolerant con filtro.
Pinout: Morpho Headers (CN7, CN10) – Acceso Completo a 76 Pines
Headers macho 2×19 (38 pines cada lado) dan acceso a TODOS los pines del LQFP64 + pines de potencia/ground extra. Incluye: 50 GPIO, 16 ADC channels (12-bit), 6 Timers 16-bit + 2 Timers 32-bit, 3 SPI, 3 I2C, 4 USART/UART, 2 CAN, 2 DAC, USB FS, SDIO, Camera DCMI, ETH RMII (en F407/F7/H7), JTAG/SWD. Ideal para desarrollo sin shields, lógica custom, sondas lógicas, analizadores.
Especificaciones Técnicas Clave (STM32F401RET6)
- Core: ARM Cortex-M4F (FPU, DSP) @ 84 MHz máx.
- Flash: 512 KB (sectores 16 KB/64 KB/128 KB). Wait states: 0-3 @ 84 MHz.
- SRAM: 96 KB (contiguo). CCM RAM: 64 KB (solo core, no DMA).
- GPIO: 50 (hasta 84 en LQFP100/144). 5V tolerant en mayoría.
- ADC: 3× ADC 12-bit (2.4 MSPS total), 16 canales, Temp sensor, VREFINT, VBAT.
- Timers: 2× 32-bit (TIM2, TIM5), 6× 16-bit (TIM1,3,4,9,10,11), 2× Watchdog (IWDG, WWDG), SysTick.
- Comunicación: 3× SPI (42.5 Mbps), 3× I2C (1 Mbps FM+), 4× USART/UART (10.5 Mbps), 1× USB 2.0 FS Device/OTG, 1× SDIO, 1× I2S.
- DMA: 2 controladores (16 streams cada), memoria-periferia, perifería-memoria, memoria-memoria.
- RTC: Calendario BCD, alarma, calibración 32 kHz, tamper, backup registers (20 B).
- Consumo: Run: ~12 mA @ 84 MHz (periféricos off). Sleep: ~5 mA. Stop: ~30 µA. Standby: ~2.4 µA (RTC on). VBAT: ~0.5 µA.
- Temperatura: -40 °C a +85 °C (Industrial), -40 °C a +105 °C (algunas referencias).
Placas de Desarrollo Similares / Alternativas
| Placa | MCU | Core | Freq | Flash/RAM | Precio | Nota |
|---|---|---|---|---|---|---|
| Nucleo-F401RE | STM32F401RET6 | M4F | 84 MHz | 512/96 KB | $12 | Equilibrio precio/rendimiento, Arduino headers |
| Nucleo-F103RB | STM32F103RBT6 | M3 | 72 MHz | 128/20 KB | $10 | Clásico "Blue Pill" en formato Nucleo. Maduro, barato. |
| Nucleo-F411RE | STM32F411RET6 | M4F | 100 MHz | 512/128 KB | $13 | Más rápido, más RAM, mismo pinout F401. |
| Nucleo-F446RE | STM32F446RET6 | M4F | 180 MHz | 512/128 KB | $15 | Alto rendimiento, DSP, FPU, USB HS PHY (ULPI). |
| Nucleo-G431RB | STM32G431RBT6 | M4F | 170 MHz | 128/32 KB | $13 | Analógico avanzado (OpAmps, Comp, DAC, ADC 16-bit), motor control. |
| Nucleo-H743ZI | STM32H743ZIT6 | M7F | 480 MHz | 2 MB/1 MB | $25 | Bestia: Dual core opcional, GPU, Ethernet, Crypto, Camera. |
| Nucleo-L476RG | STM32L476RGT6 | M4F | 80 MHz | 1 MB/128 KB | $14 | Ultra-low-power (Stop2 1.2 µA), ideal batería. |
| Nucleo-WB55RG | STM32WB55RG | M4F+M0+ | 64/32 MHz | 1 MB/256 KB | $18 | Bluetooth 5.2 / Zigbee / Thread (M0+ radio). |
| Blue Pill (STM32F103C8T6) | STM32F103C8T6 | M3 | 72 MHz | 64/20 KB | $2-4 | Mínimo coste, NO ST-LINK onboard, NO Arduino headers (pero adaptadores). |
| Black Pill (STM32F401CC/F411CE) | STM32F401CCU6 | M4F | 84/100 MHz | 256/64 KB | $4-6 | Formato Mini, USB-C, ST-LINK externo necesario. |
Programación y Entorno de Desarrollo (IDE)
El ecosistema STM32 es maduro y multi-IDE:
- STM32CubeIDE (Official, Free, Eclipse-based): Configuración gráfica (CubeMX integrado), código HAL/LL, build GCC, debug GDB/OpenOCD, ST-LINK/J-Link. Recomendado #1 para empezar.
- VS Code + PlatformIO + Cortex-Debug: Moderno, ligero, multiplataforma, IntelliSense, unit testing, CI/CD, gestión librerías. Soporta Arduino framework, mbed, Zephyr, FreeRTOS, CMSIS, HAL, LL. Recomendado #2 para desarrolladores experimentados.
- Keil MDK-ARM (Comercial, gratis hasta 32 KB código): Compilador ARMCC/Clang optimizado, RTX RTOS, debugger potente. Estándar industria legacy.
- IAR Embedded Workbench (Comercial): Compilador más optimizado, certificación funcional seguridad (ISO 26262, IEC 61508).
- Arm Mbed Online / Mbed CLI: Cloud/offline, RTOS, drivers, componentes. Deprecado para nuevo desarrollo (mbed OS 6 EOL 2026).
- Arduino IDE (con core STM32duino): Fácil para makers. Soporte limitado a subset periféricos. No debug HW nativo.
- MicroPython / CircuitPython: En placas compatibles (algunas Nucleo, Pyboard, Black Pill). Rápido prototipado, no tiempo real duro.
- Zephyr RTOS / FreeRTOS / ThreadX: Para aplicaciones profesionales multi-hilo, certificación seguridad.
Pasos Iniciales (STM32CubeIDE)
- Descargue e instale STM32CubeIDE (st.com).
- File → New → STM32 Project → Board Selector → "Nucleo-F401RE" → Next → Nombre proyecto → Finish.
- Se abre .ioc (Device Configuration Tool). Configure: RCC (HSE Crystal), SYS (SWD), GPIO (PA5 = GPIO_Output para LD2), NVIC, etc. → Ctrl+S (genera código).
- Edite
main.c→while(1) { HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin); HAL_Delay(500); } - Run → Debug (o Run). ST-LINK programa y depura.
Aplicaciones Principales del STM32
- Control de Motores / Motion Control: FOC (Field Oriented Control) BLDC/PMSM con G4/H7 (ADC 16-bit, HRPWM, comparadores rápidos, OpAmps). Drones, robots, EV, electrodomésticos.
- Automatización Industrial / PLC: Comunicación industrial (EtherCAT, PROFINET, EtherNet/IP, Modbus TCP/RTU, CANopen, IO-Link). H7/F4/F7 + PHY Ethernet.
- IoT Conectado: Wi-Fi (ESP32/ESP8266 coprocesador o STM32WB/WL), LoRa (SX1276/1262 SPI), NB-IoT/LTE-M (módem UART/USB), BLE 5.2 (WB), Thread/Matter (WB/C3/H2).
- Automotive: Body control, Gateway, ADAS (H7), BMS, OBC, Inverters (G4/H7). Calificación AEC-Q100.
- Médico: Monitores paciente, bombas infusión, diagnósticos portátiles (L4/L5 ultra-low-power, seguridad funcional).
- Instrumentación / Test & Measurement: Osciloscopios, analizadores espectro, fuentes programables, dataloggers (F4/F7/H7 + ADC rápido, DMA, USB HS).
- Audio / Procesamiento Señal: Codecs I2S, DSP (Cortex-M4/M7/FPU), ANC, beamforming (H7 + DSP instructions).
- Energía / Smart Grid: Medidores inteligentes, inversores solar, BMS, protección relés (G4/H7 analógico avanzado).
Conclusión
STM32 no es un solo chip, es una plataforma escalable de 32 bits que crece con su proyecto. Las placas Nucleo son la puerta de entrada ideal: hardware de referencia probado, ST-LINK integrado, headers Arduino para shields, y acceso completo a pines via Morpho. Empiece con Nucleo-F401RE (equilibrio perfecto) o Nucleo-G431RB (analógico avanzado, motor control) o Nucleo-L476RG (batería). Use STM32CubeIDE o VS Code + PlatformIO. Aprenda HAL (abstracción) y LL (Low Layer, rendimiento), configure CubeMX gráficamente, y migre a bare-metal / RTOS según necesidad. La curva de aprendizaje es más empinada que Arduino, pero el techo es ilimitado: desde un blinky hasta conducción autónoma, servidor web TLS, o PLC certificado SIL3. STM32 es la inversión en habilidades embebidas con mayor retorno a largo plazo.
Tecnología Industrial
- Cómo elegir el motor a prueba de explosiones adecuado: guía completa
- Mejores Prácticas de Almacenamiento de Motores Eléctricos: Maximice Longevidad y Rendimiento
- Soldadura MIG vs TIG: Guía Definitiva para Elegir el Mejor Método
- Dominando la gestión de inventario: estrategias probadas para cada negocio
- Cargadores de Baterías DIY: Guía Definitiva para Construir y Elegir los Mejores Diseños
- Construye un Conversor Digital-Analógico (DAC) DIY de Alta Calidad: Guía Paso a Paso
- Dominando los Talleres de Mecanizado CNC: Guía Completa para Profesionales
- Su guía definitiva de impresión 3D: Desde conceptos básicos hasta técnicas avanzadas
- Guía Completa de Piezas Mecanizadas: Ventajas, Aplicaciones y Soluciones Rentables
- Dominando el Mecanizado CNC de 5 Ejes: Guía Experta para Fabricación de Precisión
- Frenos Húmedos Industriales Explicados: Guía Completa para Frenado Confiable en Equipos Pesados