🛠 STM32CubeF4 et HAL : blink + UART printf générés pour la Nucleo-F401RE

Famille STM32 Nucleo-64 F4 — modelo insignia: Nucleo-F401RE · intermediaire · Schéma : IMG-stm32f4-nucleo-intermediaire-4-stm32f4nuc-cubemx-hal-blink-uart.svg — flux de travail STM32CubeF4 : CubeMX configurant USART2 et la broche PA5, génération du code HAL, compilation puis flash via ST-LINK

Objetivos

Deja la abstracción de Arduino por una sesión y crea un proyecto STM32Cube HAL para la Nucleo-F401RE. STM32CubeF4 es el paquete de firmware oficial de ST — CMSIS + controladores HAL/LL + BSP de la placa + middleware + proyectos de ejemplo listos para usar — y incluye explícitamente proyectos para la STM32F401RE-Nucleo. La generación de código se realiza en STM32CubeMX; la programación se realiza a través del ST-LINK integrado con STM32CubeProgrammer.

Hardware

Pasos

git clone --recursive https://github.com/STMicroelectronics/STM32CubeF4

  1. Clona el paquete recursivamente — es un agregado de submódulos:
  2. En CubeMX, selecciona la placa Nucleo-F401RE, habilita USART2 (PA2/PA3, el VCP del ST-LINK) en modo Asíncrono.
  3. Genera el código, luego integra el bucle de parpadeo + printf que se muestra a continuación en main.c.
  4. Compila y programa a través de ST-LINK; abre el puerto COM del ST-LINK a 115200.

Código

/* main.c — Nucleo-F401RE, STM32Cube HAL: LD2 blink on PA5 + USART2 (ST-LINK VCP) */
#include "stm32f4xx_hal.h"
extern UART_HandleTypeDef huart2;   // generated by CubeMX (PA2/PA3 -> ST-LINK VCP)
static GPIO_InitTypeDef gpio = {0};

int main(void)
{
  HAL_Init;                   /* SysTick @1 ms, NVIC defaults        */
  SystemClock_Config;         /* generated: HSI/PLL -> 84 MHz SYSCLK  */

  __HAL_RCC_GPIOA_CLK_ENABLE;
  gpio.Pin   = GPIO_PIN_5;      /* LD2 (green user LED) = PA5           */
  gpio.Mode  = GPIO_MODE_OUTPUT_PP;
  gpio.Pull  = GPIO_NOPULL;
  gpio.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOA, &gpio);

  char msg[48]; uint32_t n = 0;
  while (1) {
    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
    HAL_Delay(250);
    int len = snprintf(msg, sizeof msg,
                       "hello from Nucleo-F401RE #%lu\r\n", (unsigned long)++n);
    HAL_UART_Transmit(&huart2, (uint8_t *)msg, len, HAL_MAX_DELAY);
    HAL_Delay(750);
  }
}

Resultado esperado

LD2 parpadea a 2 Hz y el puerto COM del ST-LINK imprime un saludo numerado una vez por segundo. La función generada SystemClock_Config ejecuta el F401 a su SYSCLK predeterminado de 84 MHz derivado del HSI a través del PLL. A partir de aquí, el árbol Projects/STM32F401RE-Nucleo en el repositorio es tu recetario: ejemplos de GPIO, ADC, USART, USB y SDIO mantenidos por ST.

Errores comunes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales