Primer Programa Con STM32F0Cube (Pt III)
En los dos anteriores post de la serie Primer Programa hemos estado utilizando archivos pertenecientes a la librería STM32F0Cube. Esta librería es un banco de código de funciones ya preestablecidas que nos permitirán empezar a codificar nuestras aplicaciones sin conocer tan a detalle el micro que estemos usando.
Llegó la hora de usar a fondo y sacar provecho de esas funciones, vamos a repetir el anterior ejemplo pero esta ocasión sacando provecho a librería STM32F0Cube.
Creamos una nueva carpeta para nuestro proyecto
1
|
|
De nueva cuenta deberás copiar a la carpeta de tu proyecto el archivo linker. Recuerda lo obtienes de la librería de ST en la siguiente ruta
1
|
|
Antes de comenzar, aclararemos que la librería es un conjunto de piezas de código que nos permitirán controlar por completo los periféricos de nuestro microcontrolador y esta diseñada para ser compatible con la totalidad de la línea de micros STM32F0 de la marca ST. Estos codigos no sera necesario que los modifiques o adaptes excepto por un archivo en especial.
Copia el archivo stm32f0xx_hal_conf_template.h que encontrarás en la siguiente ruta. Deberas quitarle la proteccion contra escritura y renombrarlo a stm32f0xx_hal_conf.h
1
|
|
Con este archivo podremos controlar varias funciones de los drivers de bajo nivel ( HAL drivers ) de la librería. Una de las cosas que podemos controlar es la cantidad de drivers que vamos a usar
Deberas copiar otros 2 archivos mas, que aunque estos no los vas a modificar ( excepto por un pequeño detalle ) es necesario tenerlos en la carpeta de tu proyecto.
1 2 |
|
Agregamos la siguiente linea al archivo system_stm32f0xx.c. Lo abrimos con nuestro editor de texto y escribimos lo siguiente en la linea 85.
system_stm32f0xx.c
1
|
|
Y apartir de la linea 110 escribimos.
system_stm32f0xx.c
1 2 3 4 |
|
Para facilitarnos un poco más las cosas copiamos por completo la carpeta de la libreria STM32F0Cube al folder de nuestro proyecto
Como en anteriores ocasiones creamos nuestra carpeta Output donde guardaremos los archivos que nos arroja la compilación
1
|
|
Creamos el archivo que contendrá nuestro código magico =).
1
|
|
Abrimos con nuestro editor de texto favorito el archivo main.c y escribimos el siguiente código
Hola Mundo STM32F0Cube - main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
El anterior programa hará parpadear el led de la tarjeta conectado al puerto A pin 5. Pero en esta tercera ocasión usando las funciones de la librería STM32F0Cube. Como pudes observar en ningún momento accedemos directamente a los registros del microcontrolador.
No entraremos en detalles (aun) con las funciones que encontrarás en el código ( eso lo haremos más adelante ). Por cierto por ahora el archivo stm32f0xx_hal_conf.h no necesitara modificaciones.
Solo nos falta crear el archivo makefile para que make realice la compilación.
1
|
|
Abre el archivo en tu editor de texto y escribe el siguiente código. Recuerda usar TABs y no espacios para las indentación.
makefile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
En esta ocasión compilamos varios archivos fuente y tenemos un directorio con la librería completa de ST.
A compilar se ha dicho
1 2 |
|
Si la terminal no arrojo ningun error deberemos tener nuestro archivo test.hex en la carpeta Output
A Programar se ha dicho
Abre una nueva terminal y conectate con tu tarjeta usando OpenOCD
1 2 |
|
En la terminal anterior madaremos nuestro programa compilado a nuestra tarjeta usando telnet, conectate al puerto 4444 de la siguiente manera
1 2 |
|
Si te acepta la conexion, solo restara mandar el archivo .hex. Escribe los siguientes comandos en orden
1 2 3 |
|
El primer comando resetea y detiene al micro, el segundo manda el programa y lo escribe en la memoria y el último lo resetea y pone a correr el programa, asi que ya podras ver un feliz led parpadeando.
Conclusion
Incluir la librería completa de ST nos ayuda a no tener que conocer a fondo cómo funcionan los periféricos del microcontrolador, ahora solo tendremos que conocer a fondo cómo funciona la librería =). En general tener una librería como la STM32F0Cube representa una gran ventaja en especial si tomamos en cuenta que es compatible con toda la linea de micros de la familia STM32F0.
Solo hay que poner un poco de esfuerzo en como configurar los códigos e indicarle de manera correcta los directorios de los archivos fuente al compilador, costará un poco de trabajo al principio pero despues te acostumbras.
Para terminar te dejamos la estructura del directorio de tu proyecto
1 2 3 4 5 6 7 8 9 |
|