マイクロコントローラーの「printf」、それは何のためですか?
-
09-10-2019 - |
質問
特に8051でマイクロコントローラーのc言語のサンプルコードに「printf」命令が表示されます。マイクロコントローラーには固定出力ディスプレイがないため、「printf」命令の使用は何ですか?
解決
可能性が高いため、RS232ポートを介して、または回路内エミュレータからの仮想出力としてデバッグコンソールを接続できます。
他のヒント
printfは、「出力ディスプレイ」ではなくstdoutに出力するように定義され、stdoutは任意のストリームデバイスである場合があります。通常、ディスプレイのないシステムでは、シリアルインターフェイス(UART)に出力されるため、ターミナルまたはターミナルエミュレータ(たとえばハイパーターミナルまたはテラルム)をディスプレイデバイスとして使用できます。
いくつかの開発環境は、STDIO、STDIN、およびSTDERRで、さらにはデバッガーインターフェイス(JTAG、ICE、SWDなど)を介して開発ホストによってファイルシステムが提供される「半ホスティング」を実装しています。
通常、コンパイラのライブラリはフックまたはスタブを提供して、代替ストリームI/Oデバイスのドライバーを実装できるようにするため、たとえば、Printfがデバイスにある場合はLCDディスプレイに出力されるように実装できます。これは「リターゲティング」と呼ばれます。
マイクロコントローラーをPCのシリアルポートにインターフェイスし、データを監視できます
printf
ハイパーターミナルの使用。また、診断目的で使用できます
いくつかの開発ツールを使用すると、使用できます printf の実装が与えられた PutChar また putch. 。このようなツールでは、この関数がいくつかのデバイスに文字を送信するため、PrintFはそのデバイスにメッセージを表示します。
正しいデバイスの初期化、PutChar、Putchなどを実装するだけで(コンパイラ/LIBドキュメントをチェックしてください)、Voilá!あなたのprintfはあなたが期待しているように振る舞います。
PS:一部のコンパイラ/ライブラリ 実装しないでください すべてのprintfフォーマット仕様。繰り返しますが、ドキュメントを確認してください。