Hello World – Blink

En esta entrada explicaré todos los pasos para poner en marcha nuestro Hello World con STM32, un Blink. Es conveniente que te hayas leído las entradas anteriores para poder completar con éxito el Blink.e26Abrimos el CubeMx y hacemos click en New Project. Nos aparecerá la siguiente pantalla:

e12Hay dos pestañas : MCU Selector y Board Selector.

Con Board selector buscaríamos nuestra Discovery F0.

e13Con MCU Selector buscaremos nuestro STM32, ya sea con la ayuda de los filtros o escribiendo en el buscador la referencia si nos la sabemos.

e14Seleccionando en MCU Selector nuestro micro, en este caso el STM32F103C8 nos aparecerán disponibles las siguientes opciones:

  • Features : en el cuadro grande nos mostrará un resumen del micro con sus características más relevantes( familia, memoria, GPIOS, etc),
  • Block Diagram: Una vista de los componentes del micro.
  • Datasheet : Nos abrirá en PDF el datasheet.
  • Docs & Resources : Desde aquí podremos descargar y abrir el resto de documentación relevante.
  • Buy
  • Start Project

Haciendo click en Start Project nos saldrá la siguiente pantalla:

e15

En esta pantalla vamos a asignar el pin del Led que viene integrado en placa para realizar el test. Quizás alguno ya se haya percatado de que las placas por defecto vienen con el blink cargado, no obstante es el ejemplo más básico para explicar la configuración del proyecto.

dfgSi nos fijamos detenidamente en la placa, al lado del led nos viene el nombre del pin físico al que está conectado, el cual configuraremos en el CubeMx como GPIO_OUTPUT. Haciendo uso de la herramienta Find de la barra de herramientas buscamos el nombre del pin que sale en la placa : PC13. Una vez seleccionado, este se sombreará intermitentemente en el dibujo del micro.

e16Haciendo click izquierdo nos saldrá el desplegable de los posibles roles que tiene el pin micro, seleccionamos GPIO_OUTPUT. El programa nos coloreará en verde el pin indicando que hemos asignado un propósito al pin. De salir alguna opción en Rojo, significa que hay un conflicto de rol con otra funcionalidad que usa ese pin.e17Tras esto, click derecho en el pin/Set User Label, escribimos “LED” como se ve en imágenes anteriores. Éste será el nombre que tendrá el pin añadiendole “_Pin” en código.

Volvemos a la pantalla principal de proyecto, y en la barra superior Project/Project Settings:

e18En la parte de Toolchan / IDE, seleccionar acorde con el IDE que habeis instalado, en este caso ha sido Keil uVision MDK-ARM v5, para el caso de Eclipse sería SW4STM32.

Le damos a Ok y cuando termine saldrá lo siguiente:

e19Haciendo Click en Open Project se nos abrirá el projecto en uVision.

Como se puede observar, gracias al CubeMx, tenemos todos los ficheros necesarios para empezar a trabajar ya configurados.

e20Si curioseamos por los diversos .c y .h encontraremos las funciones con las que programar. Para el caso del Blink , en  stm32f1xx_hal_gpio.c encontraremos las acciones posibles para realizar con los GPIO, en este caso usaremos la función HAL_GPIO_TogglePin.

En el fichero stm32f1xx_hal.c encontraremos la otra función que usaremos HAL_Delay.

e21Abrimos main.c y en el while(1) añadimos las dos lineas que se ven en la foto. TogglePin tiene dos parámetros: el puerto del GPIO ( GPIOC) y el GPIO en concreto (LED_Pin). Delay tiene solo uno, el tiempo en milisegundos.

En el menú que está justo encima del arból de ficheros, le damos a build.

e22Si no ha dado error, a continuación cargaremos el código en la placa mediante ST-LINK. Si no tienes un ST-LINK en la próxima entrada del blog explicare como cargar el código mediante un Conversor USB-UART.

En las Núcleo y Discovery el ST-LINK viene integrado. No obstante siempre puedes comprar el oficial de ST o recurrir a vias alternativas: mi ST-Link es de Aliexpress y funciona perfectamente.

Antes de darle a Load, al lado de Build, asegúrate de que tienes los drivers del ST-LINK instalados, éstos se obtienen en la web de ST:

http://www.st.com/en/development-tools/stsw-link009.html

Para poder cargar nuestro programa, para el caso de la placa STM32F103C8T6 que estoy usando, hay que poner los jumpers que lleva encima como se ve en la foto y darle al botón de reset. De no hacer ésto, uVision te dará un error porque no detecta el micro mediante ST-LINK.

e23

Una vez hecho ésto, le damos a Load, si todo ha salido bien, deberiamos ver algo así en el Build Output de uVision.e25

Una vez cargado el programa, devolvemos el jumper de Boot a la posición de 0 y volvemos a pulsar el RESET.

e24Y voilá !! Blink !

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *