Skip to content

How to make printf work

Pablo González edited this page Nov 30, 2022 · 11 revisions

Introducción

Disclaimer: Este tutorial solo ha sido probado en sistemas linux

A todos en algún momento nos ubiese venido bien poder usar la función printf como si el codigo estubiera ejecutandose en nuestro ordenador. El objetivo de este articulo es explicar como podemos hacer funcionar esta funcion en una consola del STM32CubeIDE.

Hacer que el printf funcione en nuestro ordenador es más complejo de lo que pueda parecer pues lo que queremos es que printf escriba en una terminal que se encuentra en un ordenador distinto al que se esta ejecutando el código. Para lograr esto tenemos que hacer que printf pueda comunicarse con nuestro ordenador, y para hacerlo cómo esto debe ser a traves del propio cable con el que programamos el microcontrolador. Esto lo podemos lograr usando UART.

Tutorial

El siguiente tutorial se divide en dos partes.

  • En la primera se explica como preparar una consola del STM32CubeIDE para que pueda recibir y mostrar los mensajes.
  • En la segunda se explica el código que hace falta para que la función printf mande los mensajes por UART

Parte 1

Para preparar una consola capaz de recibir datos a traves de UART es tan simple como seguir los siguientes pasos:

  1. Lo primero que tenemos que hacer es conectar el microcontrolador a nuestro ordenador.

  1. Seguidamente abrimos el STM32CubeIDE.

  1. Seleccionamos el proyecto en el que queremos utilizar printf.

  2. Ahora debemos hacer click en Open Console y seleccionar 3 Command Shell Console como se puede ver en la siguiente figura. printf_tuto_1


  1. A continuación debemos selecionar las opciones que se ven en la siguiente figura y clickar en New.

printf_tuto_2


  1. Rellenaremos todos los datos como se puede ver en la siguiente figura. El nombre se recomienda que sea lo más descriptible posible como se muestra. El serial port que debes seleccionar seguramente se llame igual que el de la figura, tambien es posible que se llame /dev/ttyUSBx o /dev/ttyACMx donde las x deben ser substituidas por el número correspondiente. Para que te salgan los serial port debes tener conectado el microcontrolador. Una forma de ver cual es el tuyo en tu caso es utilizando el siguiente comando en una terminal de linux ls /dev/tty* teniendo el micro conectado y sin conectar, de esta forma observando cual es el que varia podrás saber cual es el tuyo. El baud rate y el resto de opciones deben ser exactamente las mismas que el que use el UART del microcontralador.

printf_tuto_3


Clone this wiki locally