Saltar a contenido

Plataforma PlatformIO junto con CubeMX

Antecedentes

En el artículo anterior, pudimos apreciar que el uso de PlatformIO es mucho más elegante que Keil. Como es bien sabido, en el contexto de STM32, la biblioteca HAL es más conveniente que la biblioteca estándar (cuando se combina con la potente herramienta CubeMX). Sin embargo, la compatibilidad oficial de PlatformIO con CubeMX no es perfecta (requiere conversión de código a través de middleware Python).

En este artículo, presentaré un enfoque único para que PlatformIO funcione de manera más armoniosa junto con CubeMX.

Inicialización del Proyecto

Si no tienes tiempo para leer todo esto, puedes encontrar la carpeta de proyecto creada con los siguientes pasos en este repositorio y simplemente clonarla.

Operaciones de Inicialización de CubeMX

  1. Crea un nuevo proyecto.
  2. Selecciona el modelo de MCU.
  3. Configura Pinout y Configuración.
    1. Configura RCC (elige entre reloj externo o interno, según corresponda).
    2. Configura SYS (cambia la opción DEBUG de 'No Debug' a 'Serial Wire' según sea necesario).
  4. Configura la Configuración del Reloj.
  5. Configura el Administrador de Proyectos.
    1. Página de Proyecto 1. Ingresa el nombre del proyecto (Project Name), por ejemplo, Template_of_PlatformIO_with_CubeMX. 2. Modifica la ubicación del proyecto (Project Location), por ejemplo, D:/Desktop. 3. Cambia la herramienta (Toolchain / IDE) a 'Other Toolchains'.
    2. Página del Generador de Código 1. Selecciona la opción de paquete de biblioteca de software (STM32Cube Firmware Library Package) como 'Copy only the necessary library files'. 2. Marca la opción 'Generate peripheral initialization as a pair of '.c/.h' files per peripheral' en la sección de archivos generados (Generated files).

Finalmente, después de configurar todo, haz clic en 'Generate Code' en la esquina superior derecha para generar el código.

Operaciones de Inicialización de PlatformIO

  1. Abre la página principal de PlatformIO.
  2. Haz clic en 'New Project' para crear un nuevo proyecto.
    1. Ingresa el nombre del proyecto. ¡Importante! Debe ser el mismo que el configurado en CubeMX (por ejemplo, Template_of_PlatformIO_with_CubeMX).
    2. Selecciona la placa o el modelo de MCU. Puedes elegir directamente el modelo del MCU (por ejemplo, STM32F103C8) o seleccionar una placa (por ejemplo, BluePill F103C8). ¡Asegúrate de que coincida con la configuración de CubeMX!
    3. En el marco de código (Framework), selecciona 'STM32Cube'.
    4. Desmarca la casilla 'Use default location' en la sección de ubicación (Location) y personaliza la ubicación. ¡Asegúrate de que coincida con la configuración de CubeMX (por ejemplo, D:/Desktop).
  3. Abre el archivo platformio.ini en el proyecto y agrega las siguientes líneas:

    [platformio]
    include_dir=Inc
    src_dir=Src
    

    Esto se debe a que las carpetas de estructura predeterminada generadas por PlatformIO y CubeMX son diferentes. Para garantizar la compatibilidad, seguimos la estructura de CubeMX.

  4. Puedes eliminar la carpeta 'include' del proyecto. Además, debido a que Windows no distingue entre mayúsculas y minúsculas en los nombres de archivos, la carpeta 'src' se convierte automáticamente en 'Src'.

¡Ahora puedes disfrutar plenamente de tu proyecto!

En el proyecto, los archivos con extensión .c se encuentran en la carpeta Src, mientras que los archivos con extensión .h se ubican en la carpeta Inc.

Todo el código que esté comprendido entre las etiquetas /* USER CODE BEGIN */ y /* USER CODE END */ se mantendrá sin cambios a lo largo del proceso de generación posterior realizado por CubeMX, y no será sobrescrito.

En PlatformIO, puedes compilar con el atajo Ctrl + Alt + B, compilar y cargar con Ctrl + Alt + U, y comenzar la depuración con F5.

El siguiente paso en nuestra exploración es aprender acerca de la biblioteca HAL. Continuará...

Referencias y Agradecimientos

Dirección original del artículo: https://wiki-power.com/ Este artículo está protegido por la licencia CC BY-NC-SA 4.0. Si desea reproducirlo, por favor indique la fuente.

Este post está traducido usando ChatGPT, por favor feedback si hay alguna omisión.