特に8051のマイコンのC言語のサンプルコードでprintf命令を見かけますが、マイコンには固定出力表示がないのでprintf命令は何に使うのでしょうか
4 に答える
ほとんどの場合、RS232 ポートを介して、またはインサーキット エミュレーターからの仮想出力として、デバッグ コンソールを接続できます。
printfは、「出力表示」ではなくstdoutに出力するように定義されています。stdoutは任意のストリームデバイスです。通常、ディスプレイのないシステムでは、シリアルインターフェイス(UART)に出力されるため、端末または端末エミュレーター(たとえば、ハイパーターミナルまたはTeraTerm)をディスプレイデバイスとして使用できます。
一部の開発環境では、stdio、stdin、およびstderrの「セミホスティング」が実装されており、場合によっては、デバッガインターフェイス(JTAG、ICE、SWDなど)を介して開発ホストからファイルシステムが提供されます。
通常、コンパイラのライブラリは、代替ストリームI / Oデバイス用のドライバを実装できるようにフックまたはスタブを提供します。たとえば、デバイスにLCDディスプレイがある場合にprintfがLCDディスプレイに出力するように実装できます。これは「リターゲティング」と呼ばれます。
マイクロコントローラを PC のシリアル ポートに接続し、データを監視できます。
printf
ハイパーターミナルを使用。また、診断目的で使用することもできます
一部の開発ツールでは、 putcharまたはputchの実装を指定してprintfを使用できます。このようなツールでは、この関数が何らかのデバイスに文字を送信するため、printf はそのデバイスにメッセージを表示します。
正しいデバイスの初期化を行い、putchar や putch などを実装し (コンパイラ/ライブラリ ドキュメントを確認してください)、ほら! printf は期待どおりに動作します。
PS: 一部のコンパイラ/ライブラリは、すべての printf 形式指定子を実装していません。もう一度、ドキュメントを確認してください。