Manual primer proyecto STM32. Parte 4: Programar un microcontrolador STM32

En esta última parte vamos a grabar el programa Hola mundo para STM32 que vimos en la anterior parte en el microcontrolador. Para facilitar el seguimiento de los pasos, de nuevo haré uso de galerías de fotos cuando sea oportuno.

Compilar "Hola Mundo"

Compilar el nuevo proyecto

Lo primero que tenemos que hacer es compilar el código pulsando el botón de Build All y asegurarnos que todo ha ido correcto. Es posible que la primera vez que compilemos nos muestre unos warning de funciones que hemos definido pero que no hemos utilizado. No pasa nada, es completamente normal.

Uso de ST-LINK

Modificaciones en stm32f0 discovery ST-LINK

Antes de seguir con la configuración voy a hacer un pequeño inciso y explicar el uso de los programadores ST-LINK v2. Como hemos visto en la primera parte de este tutorial, en la sección de SWD en STM32, vimos que tan sólo necesitaremos 4 pines, incluyendo alimentación, para programar un microcontrolador STM32 mediante SWD. Los dos programadores que utilizamos, tanto el ST-LINK v2 de la placa stm32f0discovery como el clon de ST-LINK v2, se conectan al ordenador mediante USB y son reconocidos automáticamente, en el caso que se muestra además, es el clon que se ha detectado perfectamente como un ST-LINK v2 original. En el clon los pines a utilizar son los que se muestra en la foto y no requiere de mayor configuración salvo actualizar el firmware como veremos más adelante. Para usar el ST-LINK de la placa stm32f0discovery sí que necesitamos de unas pequeñas modificaciones.

Aislar el ST-LINK v2 del resto de la placa de desarrollo

Para poder utilizar el ST-LINK que viene en la placa de desarrollo, lo primero que tendremos que hacer es desconectarlo del microcontrolador STM32F0 de la propia placa de desarrollo. Para hacer esto lo más sencillo es desconectar los jumpers marcados en la foto. En vez de desconectar los jumpers, se puede cortar la placa por la mitad trazando una línea recta entre PC3 y PC11 como se muestra en la imagen y separar físicamente el st-link de la placa de desarrollo STM32F0 para que sea más manejable. Aunque suene muy drástico, realmente no lo es y siempre podremos volver a programar, si así lo quisiéramos, la placa STM32F0 conectando a mano los 4 cables del SWD en donde vemos en la foto.

Una vez desconectado el ST-LINK del resto de la placa de desarrollo, por cualquiera de los dos métodos, hay que conectar 3,3V al primer pin del conector SWD. Dicho pin sirve para detectar la presencia del microcontrolador, por lo que es muy cómodo aprovechar dicho pin para poner 3,3V y alimentar nuestro microcontrolador. Hay dos modos de hacerlo, o llevamos un cable desde la propia salida de 3,3V del ST-LINK como se muestra, o ponemos un regulador lineal de 3,3V pegado con un poco de cola térmica para que no "baile" y lo alimentamos con los 5V del USB como vemos en la foto, sí lo que se ve en la foto es un montón de polvo y suciedad... pero son casi 10 años y muchísimos viajes estando conmigo y funciona como el primer día 😅, lo cual nos permitirá conectar placas que consuman bastante corriente sin correr el riesgo de quemar el pequeño regulador lineal que trae el ST-LINK. Por último, en la última foto del ST-LINK del stm32f0discovery vemos qué pines usaremos para programar nuestro microcontrolador.

Actualizar el Firmware del clon ST-LINK

Actualizar firmware en ST-LINK v2

Como veremos, es algo muy sencillo y directo. Es posible que tu clon venga ya actualizado y entonces funcione sin tener que hacer la actualización, pero si no es así, como en mi caso, la primera vez que vayamos a utilizar el clon de ST-LINK, CubeIDE nos informará que el firmware de nuestro legítimo ST-LINK es muy viejo y tiene que actualizarlo, ST-LINK firmware upgrade required. Tan sólo tenemos que darle a Open in update mode, ver que lee bien la información de nuestro ST-LINK, ST-LINK ID y versión del Firmware, y pinchar en Upgrade. Tras ello, nuestro clon ST-LINK está actualizado a la última versión, V2J31S7. Si fuera necesario, también existe una herramienta de ST para actualizar el firmware de nuestro ST-LINK, stsw-link007.

Configurar Opciones de Debug

Configuración de Debug

Ya no queda nada para poder ver nuestro led cambiar de color. Lo siguiente que tenemos que hacer es configurar cómo vamos a programar nuestro microcontrolador. Arriba, pinchar en la flecha que está la lado del botón Debug, la "cucaracha". Por defecto no viene nada configurado, así que ir a Debug Configurations.... Se abrirá una nueva ventana. En dicha ventana hacer doble click sobre STM32 MCU Debugging. Prácticamente toda la configuración es la de por defecto, pero en la primera pestaña tendremos que indicar qué aplicación vamos a programar. En C/C++ Aplication pulsar en Search Project... como se muestra en la captura y seleccionar el proyecto. En este caso TestLed.elf. El resto se puede dejar por defecto. Pinchar en Apply y luego en Close.

Configurar Opciones de Debug

Creación de un nuevo perfil de Debug

Para el que sea un poco maniático como yo, se pueden generar varios "perfiles" de programación. Yo siempre genero uno para programar y hacer Debug y otro para simplemente programar y que el microcontrolador empiece a funcionar inmediatamente. Para ello generar un nuevo perfil haciendo doble click de nuevo sobre STM32 MCU Debugging y arriba en Name cambio el nombre para distinguir el nuevo perfil. Seguir los mismos pasos anteriores, pero esta vez en Startup añadir el comando quit en la sección de Run Commands como se muestra en el ejemplo. Una vez generados los dos perfiles, en Debug ahora veremos las dos opciones. Si pulsamos en Debug, que en nuestra configuración es la opción de programar y hacer debug, CubeIDE nos abrirá la perspectiva de Debug y si todo va bien, en la consola nos mostrará Download verified successfully.

En la perspectiva de Debug por defecto el depurador se para en la primera línea de nuestro código. En esta perspectiva podemos crear Breakpoints, para que el depurador avance hasta dicho punto del código, podemos avanzar línea a línea para ver qué hace exactamente el microcontrolador, podemos ir revisando y modificando en tiempo real variables... Un montón de características imprescindibles que darían para otro manual de cuatro partes 😅.

Volviendo a nuestro proyecto, en nuestro caso pulsaremos directamente arriba en la flecha verde y veremos nuestro led cambiar de colores. ¡Un completo éxito!

A continuación se puede ver un pequeño vídeo del código ejecutándose:


Link Hello_World.mp4 [1,8MB]

Suscripción

Recibir un email cuando se publique un nuevo artículo.