- Programando la STM32 Blue Pill con el Cube Ide. Parte 1: Instalación y configuración
- Programando la STM32 Blue Pill con el Cube Ide. Parte 2: Código y depuración
La Blue Pill, como todas las placas basadas en los micros STM32 tienen una amplia variedad de herramientas de desarrollo a su disposición, muchas de ellas totalmente gratuitas. En este artículo haré una introducción al uso del Cube Ide, una completísima herramienta de ST.
Introducción
En artículos anteriores, mostraba como configurar el IDE de Arduino para programar nuestra Blue Pill. Eso es bastante conveniente si estamos acostumbrados a este IDE y al formato de código del Arduino, pero en realidad así no se aprovecha todo el potencial de esta placa y mucho menos de otras basadas en micros STM32 mas potentes.
En este artículo veremos una introducción a STM32 Cube Ide, un software gratuito de la misma empresa que fabrica los STM32 y que nos permitirá “sacar el jugo” a estos potentes microcontroladores. En la primera parte veremos como instalar el IDE y comenzar nuestro proyecto configurando el micro y sus periféricos y en la segunda veremos el código propiamente dicho, las librerías utilizadas y una introducción a la depuración.
El STM32 Cube Ide
El Cube Ide es un software muy completo y a la vez complejo, que agrupa a varios varios programas. El entorno de desarrollo propiamente dicho es el popular Eclipse que integra al compilador GCC (en realidad GCC es un conjunto de herramientas además del compilador, lo que se conoce como “toolchain”), un generador gráfico de código que nos permite inicializar todos los periféricos y bloques del micro de una manera visual (Cube MX, que también puede usarse por separado), un debugger que nos permite ejecutar el programa por pasos, inspeccionar variables y establecer breakpoints entre otras funciones y una herramienta de selección de micros y documentación (MCU Finder) que nos permite elegir el micro apropiado para nuestro proyecto, acceder a toda la documentación (hojas de datos, notas de aplicación), así como ejemplos, comunidades de usuarios, etc.
Cube Ide es multiplataforma, estando disponible para Windows, Mac OS y Linux, aunque sólo en versiones de 64 bits. Forma parte de un conjunto de herramientas provistas por ST, complementándose con Cube Programmer, para grabar micros a través de distintas interfaces sin necesidad de utilizar el IDE, Cube Monitor, que incluye una implementación de Node-RED para procesar y graficar información en tiempo de ejecución, con fines de diagnóstico y depuración y otras herramientas mas específicas para distintos micros.
Instalación
El primer paso es descargar Cube Ide desde el sitio de ST. Primero debemos registrarnos, luego de lo cual se nos enviará un mail con el enlace de descarga.
La instalación es sencilla y los detalles dependen de cada sistema operativo. Se realiza a través de un programa instalador que debemos ejecutar desde una cuenta que tenga permisos de administrador.
En este documento de ST tienen una completa guía de instalación para los tres sistemas operativos.
El primer proyecto
Con el Cube Ide ya instalado veamos los pasos que debemos seguir para crear nuestro primer proyecto, que consistirá según la tradición, en el ya conocido programa Blink que hace parpadear un led.
Iniciamos Cube Ide, que mostrará brevemente una pantalla de presentación
A continuación, se nos pide que definamos la ruta al espacio de trabajo (Workspace) que no es otra cosa que la carpeta donde se guardarán nuestros programas y archivos. Pueden dejar la que propone el IDE o cambiarla por una distinta
Una vez hecho esto veremos la página inicial del IDE donde podremos elegir lo que queremos hacer a continuación. Podemos acceder a distintas páginas de ST con información (Quick links), a páginas de soporte y herramientas de desarrollo (barra de navegación a la derecha) o comenzar un proyecto nuevo (Start a project).
Podemos comenzar un proyecto nuevo desde cero (Start new STM32 project), desde un archivo de configuración ya creado (from an existing CubeMX configuration file), importarlo desde un proyecto hecho con herramientas anteriores a Cube Ide (SW4STM32 or TrueStudio) o abrir un ejemplo (Import STM32Cube example).
En este tutorial comenzaremos un proyecto nuevo
A continuación se nos presentará el Target Selector, para elegir que micro (solapa MCU/MPU Selector) o placa (solapa Board selector) emplearemos en el proyecto. La Blue Pill no es una placa oficial de ST, así que no la vamos a encontrar por lo que debemos elegir el micro que contiene, el STM32F103C8:
Desde este selector también podemos acceder a un resumen de características, documentación, hojas de datos, etc.
Hacemos click en Next y el IDE nos pedirá que elijamos el nombre del proyecto y definamos algunas opciones, como el lenguaje de programación (C o C++).
Escribimos el nombre del proyecto (Blink) y dejamos en su valor por omisión el resto de las opciones, haciendo click luego en Finish.
Aparecerá luego una ventana que nos pregunta si queremos abrir la perspectiva del editor de configuraciones (Device Configuration Tool) o Cube MX. Una consulta similar nos aparecerá en distintas oportunidades. La perspectiva es la configuración de ventanas y elementos que se ven en determinado momento en Eclipse. Conviene marcar Recuerde mi decisión (Remember my decision) para que no se repita la consulta.
Luego de hacer click en el botón Yes, se abrirá el Cube MX y se descargarán los archivos relacionados con el micro que elegimos
Terminada la descarga, podemos realizar la configuración del micro según nuestras necesidades
Cube MX nos permite configurar las funciones básicas del micro (como la velocidad de clock) y los distintos pines y periféricos de una forma visual, generando automáticamente luego el código correspondiente. Entre otras herramientas también dispone de un estimador de consumo de energía y duración de batería, para aplicaciones donde el consumo es crítico.
Vamos a configurar sólo lo necesario para nuestro proyecto. Lo primero será el clock, así que Elegimos System Core y luego RCC y habilitamos High Speed Clock (HSE) usando un Cristal. Veremos que al hacerlo los pines PD0 y PD1 en la imagen del micro cambian a color verde, indicando que están en uso para la conexión del cristal.
Siguiendo con la configuración del clock, definiremos la velocidad de trabajo. Aunque podríamos usar otro valor, seleccionaremos la velocidad máxima: 72 MHz. Para ello vamos a la solapa Clock configuration y escribimos 72 en el campo HCLK (Mhz) que está en el centro del diagrama de bloques. Obtendremos un mensaje de error indicando que esa velocidad no se puede lograr con la configuración actual y si queremos que Cube MX busque otra solución. Pulsamos OK y veremos que se hacen algunos cambios en la configuración del oscilador para lograr los 72 MHz.
Una vez hecho esto volvemos a la solapa Pinout & Configuration donde definiremos el método de Debug y grabación. Como usaremos el ST-Link, seleccionamos Serial Wire en el campo Debug:
Y como último paso de la configuración, definiremos como salida el pin PC13, donde está conectado el LED incluido en la Blue Pill. Para eso en la misma solapa, seleccionamos la opción GPIO y en la imagen del micro hacemos click con el botón izquierdo sobre PC13. En la lista que aparece seleccionamos GPIO_Output para que ese pin funcione como salida.
Adicionalmente le pondremos un “nombre” a esa salida, para lo cual hacemos click sobre PC13 con el botón derecho, elegimos “Enter User Label” y en el campo que nos aparece escribimos como nombre “LED“
Si hacemos click en PC13 en la lista de pines en uso, podemos ver mas detalles de la configuración. Por ahora los dejaremos en sus valores originales
Una vez terminada la configuración le pedimos al IDE que guarde todos los valores haciendo click en el botón Save:
Al hacerlo, Cube MX generará el código necesario para establecer la configuración que hemos determinado. Cuando nos consulte si deseamos hacerlo, le damos click al botón Yes
Hecho esto, volveremos al IDE y podremos ver como ha quedado el proyecto generado.
Hasta aquí vimos como instalar Cube IDE e iniciar un proyecto, configurando distintas características del micro de la Blue Pill. En el siguiente artículo nos concentraremos en el código que debemos agregar para hacer parpadear el LED y como hacerlo funcionar en la placa.
Gracias. Muy completo
Excelente. Muy didáctico y muy claro.
Los gráficos y la redacción de una calidad poco frecuente.
Gracias Marcelo!