2011-01-11 8 views
8

Veo instrucciones "printf" en códigos de ejemplo de lenguaje c para microcontroladores, particularmente en 8051. Como los microcontroladores no tienen una pantalla de salida fija, ¿para qué sirve la instrucción "printf"?"printf" en microcontrolador, ¿para qué sirve?

+0

tal vez solo un trozo para el estimulador/depurador? no puede ver sin ver el código fuente de la biblioteca. –

Respuesta

16

Es muy probable que no sea así, por lo que puede conectar una consola de depuración, ya sea a través de un puerto RS232, o como salida virtual de un emulador en circuito.

7

puede interactuar el microcontrolador al puerto serie del PC y el monitor los datos que

printf

usando HyperTerminal. También puede usarlo con fines de diagnóstico

11

printf se define para que muestre a stdout no como una "pantalla de salida", stdout puede ser cualquier dispositivo de transmisión. Normalmente, en un sistema sin pantalla, se enviará a una interfaz en serie (UART), de modo que un emulador de terminal o terminal (HyperTerminal o TeraTerm, por ejemplo) se pueda usar como dispositivo de visualización.

Algunos entornos de desarrollo implementan "semi-hosting" donde stdio, stdin y stderr, e incluso en algunos casos un sistema de archivos son proporcionados por el host de desarrollo a través de la interfaz del depurador (JTAG, ICE, SWD, etc.).

Generalmente la biblioteca de su compilador le proporcionará ganchos o talones para que pueda implementar controladores para dispositivos de E/S de flujo alternativos, por ejemplo podría implementar uno para que printf salga a una pantalla LCD si su dispositivo tiene uno . Esto se llama "reorientar".

4

Algunas herramientas de desarrollo le permite utilizar printf dado una implementación de putchar o Putch. En dichas herramientas, dado que tiene esta función para enviar caracteres a algún dispositivo, printf mostrará los mensajes en ese dispositivo.

Solo tiene que hacer la inicialización correcta del dispositivo, implementar putchar, putch o similar (compruebe su compilador/documentos de lib) y ¡voilá! Su printf se comportará de la manera que está esperando.

PS: Algunos compiladores/bibliotecas no implementan todos los especificadores de formato printf. De nuevo, revisa tus documentos.