POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Cómo imprimir una variable en la consola del depurador STM32

Guía práctica para imprimir variables en STM32 con ITM, RTT, UART y Semihosting

Publicado el 07/09/2025

Guía práctica para imprimir variables en la consola del depurador STM32. Existen varias vías limpias y eficaces para enviar mensajes de depuración a una consola mientras trabajas con STM32. Las más cómodas son SWV ITM mediante el pin SWO y SEGGER RTT que no requiere pin. También puedes usar UART o semihosting según tu contexto. A continuación verás cómo configurar cada opción en pocos pasos y con recomendaciones clave.

En Q2BSTUDIO desarrollamos soluciones embebidas y de escritorio orientadas a resultados, con enfoque en software a medida, aplicaciones a medida, ia para empresas, agentes IA, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y power bi. Si buscas un equipo experto que integre firmware con servicios y analítica, descubre nuestro enfoque en aplicaciones a medida y software a medida.

Opción A — SWV ITM mediante SWO

Ideal cuando usas STM32CubeIDE o Keil IAR con un ST Link o J Link y tu MCU expone el pin TRACESWO, normalmente PB3.

Paso 1 Cableado. Asegura que el pin SWO TRACESWO de la placa está conectado al programador depurador. En Nucleo y Discovery suele venir listo de fábrica.

Paso 2 Configurar depuración en STM32CubeIDE. Abre Debug Configurations, elige tu configuración de lanzamiento y ve a la pestaña Debugger. Selecciona interfaz SWD. Activa Serial Wire Viewer SWV o Trace Asynchronous SW. Ajusta HCLK con el valor real de tu reloj de CPU por ejemplo 80 MHz. Fija la velocidad de SWO típicamente entre 2 MHz y 4 MHz y coherente con la sonda, a menudo derivada de HCLK dividido entre 2.

Paso 3 Abrir la consola SWV. En el IDE ve a Window Show View SWV ITM Data Console. Entra en ajustes con el icono de la llave inglesa, habilita el Stimulus Port 0 y pulsa Start Trace con el icono rojo verde.

Paso 4 Código. Puedes enviar datos llamando a ITM_SendChar o redirigir printf al puerto ITM mediante una implementación de la función write del sistema. Asegúrate de incluir los encabezados CMSIS del core que corresponda a tu MCU por ejemplo core cm4 o core cm7 y habilitar el puerto de estímulo 0.

Consejos con ITM. Desactiva el buffer de stdout para ver los mensajes al instante usando setvbuf de stdout en modo sin buffer. Si usas formatos con coma flotante en newlib nano activa la opción de linker u printf float. Evita formatos pesados en interrupciones y prefiere llamadas ligeras a ITM_SendChar dentro de ISRs.

Opción B — SEGGER RTT sin pin

Excelente cuando no tienes el pin SWO o necesitas registro de alto rendimiento sin ocupar pines. Funciona de forma nativa con J Link y en algunos entornos también con ST Link más OpenOCD.

Paso 1 Añade a tu proyecto los archivos SEGGER RTT del paquete oficial por ejemplo SEGGER RTT c y SEGGER RTT h.

Paso 2 En el código, escribe con SEGGER RTT WriteString o formatea con SEGGER RTT printf en el canal 0 u otro buffer. RTT usa un área en RAM y es no bloqueante para la mayoría de casos.

Paso 3 Visualiza la salida con J Link RTT Viewer aplicación de escritorio, con JLinkRTTClient por línea de comandos o con el complemento de RTT en CubeIDE o VS Code.

Ventajas alta velocidad, cero pines y consumo mínimo de CPU. Inconveniente su mejor integración se obtiene con herramientas J Link.

Opción C — UART printf portátil y sencilla

Redirige printf a un puerto serie con HAL UART Transmit o el driver que utilices. En placas Nucleo puedes usar el puerto virtual del ST Link VCP. Abre un terminal serie en tu PC con la velocidad configurada y verás el log sin depender del depurador.

Opción D — Semihosting funcional pero lento

Si habilitas semihosting en la configuración del depurador y enlazas con stubs de semihosting, printf se envía a la consola del depurador. Es bloqueante y detiene la CPU en cada escritura, útil para demostraciones rápidas pero no recomendable en sistemas de tiempo real.

Checklist de resolución de problemas

Si no aparece nada en SWV verifica que has arrancado el trazado en la consola SWV y que el puerto de estímulo 0 está activado. Revisa los valores reales de HCLK y la frecuencia de SWO.

Si tu placa no tiene el pin SWO accesible usa SEGGER RTT o UART.

Si ves texto corrupto reduce la velocidad de SWO y confirma el valor exacto de HCLK.

Si faltan encabezados de ITM incluye el header CMSIS del core adecuado por ejemplo core cm3, cm4, cm7.

Para máximo rendimiento prioriza RTT o ITM y evita printf con coma flotante en bucles críticos.

Buenas prácticas recomendadas

Define un wrapper ligero para logging que permita conmutar entre ITM, RTT y UART según build o entorno. Mantén los logs fuera de interrupciones o usa colas y vaciado en tarea de baja prioridad. Centraliza el cálculo del reloj para que la configuración de SWO refleje siempre el HCLK real. En producción desactiva o reduce el nivel de log para minimizar impacto.

En Q2BSTUDIO acompañamos a equipos embebidos y de software en la implantación de pipelines de testing, observabilidad y automatización, integrando registros de firmware con paneles y analítica de negocio. Además de experiencia en microcontroladores y depuración avanzada, ofrecemos ciberseguridad, servicios cloud aws y azure e inteligencia de negocio con power bi. Si quieres llevar tu flujo de trabajo de desarrollo al siguiente nivel y estandarizar procesos, conoce nuestra propuesta de automatización de procesos.

Resumen rápido. SWV ITM es perfecto si tienes el pin SWO y usas STM32CubeIDE o herramientas compatibles. SEGGER RTT brilla por su velocidad y cero pines. UART es universal y muy sencilla. Semihosting es útil para pruebas, pero es lento. Con estas opciones podrás imprimir variables en la consola del depurador STM32 de forma limpia y eficiente, mejorando tu productividad y la calidad de tus desarrollos.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio