"printf" im Mikrocontroller, wozu dient es?

8

Ich sehe "printf" Anweisung in Beispielcodes der c-Sprache für Mikrocontroller besonders in 8051. Da Mikrocontroller keine feste Ausgabeanzeige hat, was ist die Verwendung der "printf" Anweisung?

    
LEM Adane 11.01.2011, 04:06
quelle

4 Antworten

16

Es ist wahrscheinlicher, dass Sie eine Debugging-Konsole anschließen können, entweder über einen RS232-Port oder als virtuelle Ausgabe von einem In-Circuit-Emulator.

    
Raph Levien 11.01.2011, 04:09
quelle
11

printf ist so definiert, dass es nicht "output display", sondern "stdout" ausgibt. In der Regel wird es auf einem System ohne Anzeige an eine serielle Schnittstelle (UART) ausgegeben, so dass ein Terminal- oder Terminal-Emulator (z. B. HyperTerminal oder TeraTerm) als Anzeigegerät verwendet werden kann.

Einige Entwicklungsumgebungen implementieren "semi-hosting", wobei stdio, stdin und stderr, und in einigen Fällen sogar ein Dateisystem vom Entwicklungs-Host über die Debugger-Schnittstelle (JTAG, ICE, SWD usw.) bereitgestellt wird.

Im Allgemeinen stellt Ihnen die Bibliothek Ihres Compilers Hooks oder Stubs zur Verfügung, so dass Sie Treiber für alternative Stream-I / O-Geräte implementieren können. Sie können also beispielsweise eine implementieren, damit printf auf ein LCD-Display zeigt, wenn Ihr Gerät ein solches besitzt. Dies wird "Retargetting" genannt.

    
Clifford 11.01.2011 18:25
quelle
7

Sie können den Mikrocontroller an die serielle Schnittstelle des PCs anschließen und die Daten überwachen, die Sie

haben
  

printf

mit Hyperterminal. Sie können es auch für Diagnosezwecke verwenden

    
ckv 11.01.2011 04:11
quelle
4

Einige Entwicklungstools ermöglichen die Verwendung von printf bei einer Implementierung von putchar oder putch . In solchen Tools sendet printf Nachrichten an dieses Gerät, da diese Funktion das Senden von Zeichen an ein Gerät ermöglicht.

Sie müssen nur die korrekte Geräteinitialisierung durchführen, putchar, putch oder ähnliches implementieren (überprüfen Sie Ihren Compiler / lib docs) und voilá! Ihr printf wird sich so verhalten, wie Sie es erwarten.

PS: Einige Compiler / Bibliotheken implementieren nicht alle printf-Formatspezifizierer . Überprüfen Sie erneut Ihre Dokumente.

    
Leo-BH 22.01.2011 10:08
quelle