Tutorial de introducción a STM32CubeIDE

Índice

STM32CubeIDE software

Para mejorar la facilidad de uso de la familia de microcontroladores STM32, rica en funciones y eficiente en cuanto a consumo energético, en 2019 ST ha añadido una herramienta de desarrollo STM32 multifuncional y gratuita al ecosistema de software STM32Cube: STM32CubeIDE.

Para funcionar tan bien como las herramientas comerciales de entorno de desarrollo integrado (IDE), STM32CubeIDE aprovecha al máximo la tecnología de Atollic®, un proveedor de herramientas de desarrollo integrado adquirido por STMicroelectronics en 2017. Utilizando términos de licencia abiertos estándar del sector, este software IDE añade características específicas de STM32 para simplificar y acelerar los diseños integrados basados en STM32, incluidas las potentes herramientas de configuración de microcontroladores y gestión de proyectos STM32CubeMX.

Al integrar STM32CubeMX con STM32CubeIDE, ST ha creado un entorno de desarrollo más potente. El ecosistema completo STM32Cube también incluye el grabador de código STM32CubeProgrammer y la familia de monitores de ejecución de código STM32CubeMonitor, así como numerosos paquetes de firmware para MCU independientes.

¿Qué es STM32CubeIDE?

STM32CubeIDE es una herramienta oficial de desarrollo de software gratuita de ST, basada en el marco Eclipse®/CDT, la cadena de herramientas de compilación GCC y la herramienta de depuración GDB, y admite la adición de complementos funcionales de terceros. Al mismo tiempo, STM32CubeIDE integra algunas de las características de STM32CubeMX y STM32CubeProgrammer.

Con STM32CubeIDE, los desarrolladores pueden hacer de todo, desde la selección de chips, la configuración de proyectos y la generación de código, hasta la edición, compilación, depuración y grabación de código.

STM32Cube software ecosystem
STM32Cube software ecosystem

Características de STM32CubeIDE

1. Integrar STM32CubeMX:

  • Selección del microcontrolador STM32
  • Asignación de pines, relojes, configuración de IP y middleware
  • Creación de proyectos y generación de código de inicialización

2. Basado en Eclipse/CDT, compatible con complementos Eclipse, utiliza la cadena de herramientas ARM y el depurador GDB en GNU C/C++.

3. Otras funciones avanzadas de depuración:

  • Núcleos de CPU, registros IP y vistas de memoria
  • Vista de variables en tiempo real
  • Análisis del sistema y seguimiento en tiempo real (SWV)
  • Herramienta de análisis de fallos de la CPU

4. Compatible con sondas de depuración ST-LINK y J-Link

5. Compatible con la importación de proyectos desde TrueSTUDIO y AC6 (SW4STM32)

6. Sistemas operativos compatibles: Windows, Linux y MacOS

Descargar STM32CubeIDE

Área de trabajo STM32CubeIDE

STM32CubeIDE es un marco basado en Eclipse que hereda algunas de las características de Eclipse que no son familiares para los usuarios, como las vistas en perspectiva, los espacios de trabajo, etc.

Espacio de trabajo: STM32CubeIDE gestiona los proyectos a través del espacio de trabajo. Al abrir STM32Cube, se crea un nuevo espacio de trabajo predeterminado. El proyecto nuevo o importado pertenecerá a este espacio de trabajo. Los proyectos que se encuentran en el mismo espacio de trabajo tienen la misma configuración a nivel de IDE (establecida en Ventana→Preferencias), como los ajustes de visualización y estilo de edición. Desde el punto de vista del sistema de archivos, un espacio de trabajo es una carpeta que contiene varias carpetas de proyectos y una carpeta denominada «.metadata», que contiene información sobre todos los proyectos de ese espacio de trabajo. La carpeta «.metadata» contiene información sobre todos los proyectos del espacio de trabajo. El usuario puede cambiar de un espacio de trabajo a otro a través del menú Archivo→Cambiar espacio de trabajo.

Perspectiva: una perspectiva es una serie de ventanas relacionadas con un determinado tipo de función. Las más utilizadas son la perspectiva de edición C/C++, la perspectiva de depuración y la perspectiva de configuración CubeMX.

STM32CubeIDE Perspective
STM32CubeIDE Perspective

La perspectiva de edición C/C++ incluye el Administrador de proyectos, la ventana Editar, la ventana Esquema, etc. El Administrador de proyectos le permite ver y manipular todos los proyectos del espacio de trabajo actual. Haga doble clic para abrir un archivo del proyecto y el contenido del archivo se mostrará en la ventana Editar, donde podrá editarlo. La ventana Esquema, situada en el extremo derecho, muestra todas las funciones, variables y macros definidas en el archivo actualmente abierto.

El menú Mostrar vista de la ventana le permite abrir y cerrar las ventanas que deben mostrarse en la perspectiva de edición C/C++.

Puede cambiar entre diferentes vistas de perspectiva utilizando los iconos de la parte superior derecha; por ejemplo, al hacer clic en el icono del rastreador, puede cambiar a la vista de perspectiva de depuración. Al hacer clic en el botón Depurar de la barra de herramientas situada debajo de la vista Perspectiva de edición C/C++, también se cambiará automáticamente a la vista Perspectiva de depuración después de iniciar la depuración.

¿Cómo se utiliza STM32CubeIDE?

1. Gestión de proyectos

Crear un nuevo proyecto

Con STM32CubeIDE, los usuarios pueden iniciar un nuevo proyecto de diversas maneras. La pantalla de bienvenida de STM32CubeIDE muestra los accesos directos para crear/importar un proyecto, correspondientes a los cuatro escenarios que se indican a continuación. Las funciones correspondientes también se pueden implementar a través de Nuevo e Importar en el menú Archivo.

  1. Crear un nuevo proyecto STM32 desde cero
  2. Ya existe un archivo de configuración STM32CubeMX (archivo *.ioc) y desea crear un nuevo proyecto STM32 basado en este archivo ioc.
  3. Ya tengo un proyecto SW4STM32 o TrueSTUDIO y quiero convertirlo en un proyecto STM32CubeIDE.
  4. Crear un nuevo proyecto basado en las rutinas de la biblioteca STM32Cube
STM32CubeIDE New Project
STM32CubeIDE New Project

Estructura del proyecto STM32CubeIDE

STM32CubeIDE tiene dos estructuras de proyecto, como se muestra en la siguiente figura.

STM32CubeIDE project structure diagram
STM32CubeIDE project structure diagram

Las MCU de un solo núcleo son estructuras planas.

Para los MCU de arquitectura de doble núcleo o los MCU de seguridad, como las series STM32H7, STM32L5 y STM32MP1, el proyecto STM32CubeIDE tiene una estructura jerárquica. Tomemos como ejemplo el STM32H7: después de crear o importar un proyecto STM32H7, verá una estructura de proyecto de tres capas en la barra del Explorador de proyectos: la capa superior es el proyecto «raíz», luego hay dos proyectos «secundarios» correspondientes a los núcleos CM7 y CM4, respectivamente. La capa superior es el proyecto «raíz», luego hay dos proyectos «secundarios» correspondientes a los núcleos CM7 y CM4, y los archivos del proyecto se encuentran en los proyectos «secundarios». Estos dos proyectos «secundarios» CM7 y CM4 son los proyectos reales que se pueden compilar y depurar, mientras que el proyecto «raíz» es solo un «contenedor» que contiene los proyectos «secundarios» CM7 y CM4. AN5361, AN5394, AN5360 y AN5564 describen cómo crear, importar, compilar y depurar proyectos STM32H7 de doble núcleo, STM32L5, STM32MP1 y STM32WL, respectivamente, en STM32CubeIDE.

Gestión de la biblioteca de firmware

STM32CubeIDE integra algunas de las características de STM32CubeMX, lo que le permite generar un nuevo proyecto seleccionando directamente el modelo de chip/placa de desarrollo o seleccionando una rutina. El controlador y el código de rutina necesarios para generar un proyecto con STM32CubeIDE provienen de las bibliotecas de firmware de cada familia STM32.

En Ayuda→Administrar paquetes de software integrado, se pueden administrar todas las bibliotecas de firmware STM32 y otros complementos (instalar/eliminar bibliotecas de firmware).

El botón Instalar ahora permite a STM32CubeIDE descargar e instalar automáticamente desde la red, y el botón Desde local permite instalar bibliotecas de firmware descargadas previamente.

El botón Eliminar ahora permite eliminar la biblioteca de firmware seleccionada.

STM32CubeIDE firmware library
STM32CubeIDE firmware library

En la pestaña STM32Cube Firmware Updater de la ventana Window Preferences, puede configurar la ruta de instalación de la biblioteca de firmware y cómo actualizarla.

STM32CubeIDE Firmware Preferences Setting
STM32CubeIDE Firmware Preferences Setting

Configuración de red

De forma predeterminada, STM3CubeIDE intentará conectarse a la red al abrir y crear un nuevo proyecto. También puede seleccionar «Modo sin conexión» para evitar que STM32CubeIDE se conecte a la red. Sin embargo, deberá instalar las bibliotecas de firmware descargadas previamente mediante el botón «Desde local» de la ventana «Administrador de paquetes de software integrado» de la imagen anterior; de lo contrario, el código no se generará automáticamente para el nuevo proyecto STM32.

Haga clic en el botón «Comprobar conexión» para comprobar el estado actual de la conexión de red. Si aparece una x roja al final de la comprobación, significa que hay un problema con la configuración de red y debemos ir a la página «Conexión de red» para configurarla.

Además de la detección del estado de la red activa anterior, si falla la descarga del firmware, compruebe también si la configuración de red de STM32CubeIDE es correcta.

Los pasos de configuración se muestran en la siguiente figura:
1. Vaya al menú Preferencias de ventana y seleccione la pestaña Conexiones de
red generales. 2. Seleccione el método Manual
. 3. Seleccione HTTP y haga doble clic para abrir la ventana de edición y configurar los parámetros de conexión de red.

STM32CubeIDE Network Configuration
STM32CubeIDE Network Configuration

Abrir/Cerrar/Eliminar/Cambiar/Exportar proyectos STM32CubeIDE

En la ventana Explorador de proyectos, puede ver todos los proyectos del espacio de trabajo actual. Los usuarios pueden abrir, cerrar, eliminar, importar, exportar y renombrar cualquier proyecto en esta ventana.

2. Compilación de código

Configuración y compilación de propiedades

Seleccione un proyecto en el Explorador de proyectos, haga clic con el botón derecho del ratón y acceda al menú de propiedades, donde podrá configurar los elementos de compilación.

Una vez completada la configuración, el proyecto estará listo para compilarse. Puede iniciar la compilación de tres maneras:
– Método 1: seleccione el proyecto, haga clic con el botón derecho del ratón sobre él y seleccione «Compilar proyecto».
– Método 2: seleccione el proyecto, acceda a él desde el menú Proyecto y, a continuación, seleccione «Compilar proyecto».
– Método 3: seleccione el proyecto y haga clic en el icono Compilar de la barra de herramientas.

STM32CubeIDE project property configuration
STM32CubeIDE project property configuration

Mejorar la velocidad de compilación

Al habilitar la compilación paralela, puede mejorar la velocidad de compilación de STM32Cube IDE.
Seleccione el proyecto, haga clic con el botón derecho del ratón sobre él y acceda al menú de propiedades, seleccione «C/C++ Build» y, en la pestaña «Behavior», marque la opción «Enable parallel build».

STM32CubeIDE CC++ Build parallel compile
STM32CubeIDE CC++ Build parallel compile

Herramientas auxiliares para la compilación

Una vez compilado el proyecto, la ventana «Build Analyzer» muestra el uso de todas las regiones y secciones de memoria definidas en el archivo de enlace, incluyendo la dirección de carga, la dirección de ejecución, cuántos bytes están ocupados, cuántos bytes quedan, etc.

La ventana «Static Stack Analyzer» muestra el uso de la pila estática.

STM32CubeIDE también ofrece una función de compilación sin interfaz gráfica, que permite compilar desde la línea de comandos sin abrir la interfaz gráfica de usuario de CubeIDE.

3. Depuración y grabación de código

Configuración de depuración y ejecución

Una vez que el proyecto STM32CubeIDE se ha compilado sin errores, está listo para la depuración y la descarga.

En la barra de herramientas de la perspectiva C/C++ hay tres botones relacionados con la descarga y la depuración: Depurar, Ejecutar y Herramientas externas.

El pequeño triángulo situado junto al botón «Depurar» abre el menú Configuraciones de depuración para configurar los parámetros de depuración, como la selección del depurador, la configuración de la conexión GDB, la configuración de ST-LINK, la configuración del cargador Flash externo, etc., y para iniciar la depuración.

Con el botón «Ejecutar», puede descargar el programa sin iniciar la depuración.

El botón «Herramientas externas» permite invocar herramientas de línea de comandos externas.

STM32CubeIDE Code Debugging
STM32CubeIDE Code Debugging

Iniciar depuración

STM32CubeIDE utiliza GDB para la depuración, es compatible con los depuradores STLink y SEGGER J-Link, y admite la conexión al MCU de destino a través de la interfaz SWD o JTAG.

Una vez compilado el proyecto STM32CubeIDE, la depuración se puede iniciar directamente haciendo clic en el icono del rastreador de la barra de herramientas o seleccionando el menú Ejecutar–>Depurar.

STM32CubeIDE Start Debugging
STM32CubeIDE Start Debugging

Si es la primera vez que se depura el proyecto actual, STM32CubeIDE primero compilará el proyecto y luego abrirá la ventana de configuración de depuración. La ventana de configuración de depuración contiene opciones para la selección de la interfaz de depuración, la configuración de STLink, la configuración de reinicio y la configuración del cargador flash externo, etc. Los usuarios pueden comprobar o modificar las configuraciones. Después de confirmar que todas las configuraciones son correctas, puede hacer clic en Aceptar para iniciar la depuración.

A continuación, STM32CubeIDE descargará primero el programa en la MCU y, a continuación, iniciará la ejecución desde la entrada del programa especificada en el archivo de enlace (*.ld). El programa inicia la ejecución desde Reset_Handler de forma predeterminada y se detiene en la primera línea de la función principal, a la espera de la siguiente instrucción de depuración.

Operaciones básicas de depuración

Después de iniciar la depuración, STM32CubeIDE cambiará automáticamente a la vista de perspectiva de depuración, y los botones de operación de depuración se enumeran en la barra de herramientas de la vista de perspectiva de depuración. Como se muestra en la siguiente figura.

Basic debugging operation of STM32CubeIDE
Basic debugging operation of STM32CubeIDE

4. Uso de complementos

STM32CubeIDE también es compatible con los complementos de Eclipse. Hay dos métodos para instalarlos:

  1. Instalación mediante «Eclipse Marketplace» en el menú Ayuda.
  2. Instalación mediante «Instalar nuevo software» en el menú «Ayuda».
STM32CubeIDE plugins Installing
STM32CubeIDE plugins Installing

Ejemplo de programación STM32CubeIDE

Experimentemos el proceso de desarrollo de software utilizando STM32CubeIDE a través de una rutina de luz LED parpadeante.

La rutina utiliza la placa de desarrollo NUCLEO-H743ZI y crea un nuevo proyecto desde cero a través de STM32CubeIDE. A continuación, el proyecto implementa una función sencilla: el LED1 integrado parpadea automáticamente a intervalos de 500 ms.

Lo que podemos aprender de este ejemplo de programación es lo siguiente:

  • Crear un nuevo proyecto STM32CubeIDE
  • Configurar el chip STM32
  • Añadir código de usuario y compilar
  • Establecer los parámetros de depuración
  • Depurar el código (ver variables y registros)
  • Establecer puntos de interrupción

En primer lugar, seleccione Archivo–>Nuevo–>Proyecto STM32. STM32CubeIDE abrirá la ventana de selección de MCU. En esta ventana, puede seleccionar un modelo concreto de chip, o bien una placa de desarrollo o rutina ST determinada. Aquí escribimos STM32H743ZI en el cuadro de búsqueda, puede seleccionar directamente este chip y, a continuación, hacer clic en Siguiente.

Create STM32CubeIDE New Project and Select STM MCU model
Create STM32CubeIDE New Project and Select STM MCU model

En la siguiente ventana emergente, debe establecer el nombre, el tipo y la ubicación del proyecto para guardarlo. De forma predeterminada, el nuevo proyecto se guardará en el espacio de trabajo actual, pero también puede desmarcar «Usar ubicación predeterminada» y personalizar la ubicación del proyecto como se muestra a continuación. Tenga en cuenta que si intenta colocar dos proyectos en la misma ruta, es posible que se produzca un error durante el proceso de creación posterior. Por lo tanto, puede añadir el nombre del proyecto a la ruta para distinguir los diferentes proyectos.

Una vez completada la configuración, haga clic en Finalizar y STM32CubeIDE creará un proyecto para nosotros y abrirá la interfaz de configuración del chip, que es la misma que la de STM32CubeMX.

Durante este tiempo, es posible que aparezca una ventana emergente indicando que se abrirá la perspectiva de configuración de CubeMX. Haga clic en Sí y ya está.

STM32CubeMX Configuration Perspective
STM32CubeMX Configuration Perspective

Lo siguiente que hay que hacer es configurar el reloj, el GPIO, los periféricos, el middleware, etc., según los requisitos funcionales en la pantalla de configuración del chip. En esta rutina, solo utilizamos PB0, que se utiliza como salida para controlar LED1, por lo que solo tenemos que configurarlo. El reloj utiliza la configuración predeterminada.

En la vista Pinout, el pin que se va a configurar se puede encontrar rápidamente en el diagrama del paquete del chip utilizando la barra de búsqueda.

Seleccione el pin, haga clic con el botón derecho del ratón sobre él y seleccione la función GPIO_Output.

A continuación, vaya a la vista System, haga clic en el módulo GPIO y podrá ver el pin PB0 que acaba de configurar. Esta ventana también le permite seguir ajustando otros parámetros de PB0, como pull-up/down, velocidad, etc. También es posible definir una etiqueta de usuario LDE1 para él, que es fácil de referenciar en el código.

Configure GPIOs on Create STM32CubeIDE
Configure GPIOs on Create STM32CubeIDE

Una vez realizada toda la configuración, seleccione Proyecto–>Generar código para volver a generar el código. En este punto, STM32Cube cambia a la vista de perspectiva C/C++ y, a continuación, puede añadir el archivo del usuario o realizar cambios en un archivo C.

Aquí, añadimos un fragmento de código que invierte PB0. Tenga en cuenta que todo el código añadido por el usuario debe colocarse entre las declaraciones «USER CODE BEGIN xxx» y «USER CODE END xxx». De esta forma, cuando se vuelva a generar el código, esta parte del código no se perderá.

Después de añadir el código, haga clic en «Build» para iniciar la compilación.

Generate Code and Compile Project
Generate Code and Compile Project

Si la compilación ha finalizado y no se han detectado errores, puede hacer clic en Depurar para iniciar la depuración.

La primera vez que inicie la depuración, aparecerá una ventana de configuración de parámetros de depuración. Asegúrese de que todos los parámetros sean correctos, haga clic en Aceptar y STM32CubeIDE cambiará automáticamente de la interfaz de edición a la interfaz de depuración. Como se muestra en la siguiente figura.

En la interfaz de depuración, puede depurar en un solo paso utilizando los botones de acción de la barra de herramientas.

Haga doble clic en la barra de marcadores situada más a la izquierda de una línea de código para añadir un punto de interrupción en esa línea.

Se abrirán varias ventanas de depuración en el lado derecho, entre las que se incluyen: variables locales, puntos de interrupción, variables globales y registros, etc. Estas ventanas se pueden abrir o cerrar en el menú Ventana–>Mostrar vista.

STM32CubeIDE Debug Code
STM32CubeIDE Debug Code

STM32CubeIDE frente a STM32CubeMX

STM32Cube IDE es un entorno de desarrollo integrado (IDE) para desarrollar aplicaciones en microcontroladores STM32. Basado en la plataforma Eclipse, STM32Cube IDE integra STM32CubeMX, depuradores, editores, compiladores y otras herramientas, proporcionando a los desarrolladores un entorno completo. STM32Cube IDE ofrece capacidades de depuración, control de versiones, edición de código y funciones de compilación, lo que permite a los desarrolladores completar todo el proceso de desarrollo dentro de una interfaz unificada.

STM32CubeMX es una herramienta de configuración gráfica diseñada para inicializar microcontroladores STM32 y generar código de inicialización. Proporciona una interfaz intuitiva que permite a los usuarios seleccionar modelos de microcontroladores, configurar periféricos, asignaciones de pines y generar el código de inicialización correspondiente. STM32CubeMX también puede generar archivos de configuración FreeRTOS, configurar el árbol de reloj y establecer prioridades de interrupción. El código generado se puede integrar en varios entornos de desarrollo integrado (IDE), como Keil o IAR, para el desarrollo posterior de aplicaciones.

FeatureSTM32CubeMXSTM32Cube IDE
PurposeConfiguration tool for STM32 MCUsFull IDE for application development
FunctionalityInitializes MCUs, configures peripherals, generates codeCode writing, debugging, building, and compiling
PlatformStandalone, integrates with Keil, IARBuilt on Eclipse, integrates CubeMX, debugging tools
Code GenerationGenerates initialization code for external IDEsDevelops and compiles applications directly
User InterfaceGraphical interface for configurationFull IDE with editing and debugging tools
Use CaseSet up peripherals and generate base codeWrite, build, and debug applications

Preguntas frecuentes sobre STM32CubeIDE

¿STM32CubeIDE puede generar archivos BIN o HEX después de la compilación?

De forma predeterminada, STM32CubeIDE genera archivos ELF tras la compilación. Sin embargo, también admite la generación de archivos HEX o BIN. El proceso de configuración es el siguiente: Vaya al menú principal Project > Properties > C/C++ Buildy abra la configuración donde puede configurar el formato de salida.

generating BIN or HEX files by STM32CubeIDE
Generating BIN or HEX files by STM32CubeIDE

Sí, por supuesto. STM32CubeIDE integra STM32CubeMX como un módulo dentro de su entorno de desarrollo. Al crear un nuevo proyecto en CubeIDE, STM32CubeMX se invoca automáticamente para permitir a los usuarios realizar configuraciones de inicialización gráficas.

Puede haber varias razones por las que STM32CubeIDE no genera código:

  • Asegúrese de que STM32CubeMX esté correctamente integrado y se invoque durante la creación del proyecto.
  • Compruebe que ha configurado correctamente el microcontrolador y sus periféricos en STM32CubeMX antes de intentar generar el código.
  • Verifique la configuración en la Project > Properties , en particular las opciones de generación de código.
  • Asegúrese de que no haya errores ni configuraciones faltantes que puedan impedir la generación de código.

Suscríbete

Únete a nuestra lista de suscriptores para recibir actualizaciones mensuales del blog, noticias de tecnología y estudios de caso. Nunca enviaremos spam y puedes cancelar tu suscripción en cualquier momento.

Scroll al inicio

Cotización