2011-01-11 13 views
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?"printf" im Mikrocontroller, wozu dient es?

+0

vielleicht nur ein paar Stummel für den Stimulator/Debugger? kann nicht ohne den Bibliotheksquellcode sehen. –

Antwort

16

Wahrscheinlicher als nicht, also können Sie eine Debugging-Konsole entweder über einen RS232-Anschluss oder als virtuellen Ausgang von einem In-Circuit-Emulator anschließen.

7

können Sie Schnittstelle des Mikrocontrollers an die serielle Schnittstelle des PCs und überwachen die Daten, die Sie

printf

Hyper-Terminal verwenden. Sie können es auch für Diagnosezwecke verwenden.

11

printf ist so definiert, dass es an stdout keine "output display" ausgibt, stdout kann ein beliebiges Stream-Gerät sein. 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 sogar in einigen Fällen ein Dateisystem vom Entwicklungs-Host über die Debugger-Schnittstelle (JTAG, ICE, SWD usw.) bereitgestellt wird.

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

4

Einige Entwicklungs-Tools ermöglicht es Ihnen,printf gegeben eine Implementierung von putchar oder putch zu verwenden. Da diese Funktion das Senden von Zeichen an ein Gerät ermöglicht, zeigt printf in diesem Tool Nachrichten auf diesem Gerät an.

Sie müssen nur die richtige 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 Formatbezeichner. Überprüfen Sie erneut Ihre Dokumente.