2014年10月6日月曜日

FRDM-KL25Z : 標準入出力 printf, scanf, gets を使う (CodeWarrior + Processor Expert)


このエントリーをはてなブックマークに追加
接続に OpenSDA を使用しています。PC側からの入出力は TeraTerm。

プログラム側(CodeWarrior)

  1. Components Library で ConsoleIO を追加する
  2. ConsoleIO の Component Inspector で Rx new line sequence と Tx new line sequence を両方 Rx にする
  3. ConsoleIO の子の Serial_LDD の Component Inspector で設定を以下のようにする
DeviceUART0
Baud rate38400
RxDTSI0_CH2/PTA1/UART0_RX/TPM2_CH0
TxDTSI0_CH3/PTA2/UART0_TX/TPM2_CH1

後は、コード側で stdio.h をインクルードして printf などを使います。

TeraTerm 側

  1. 設定 → 端末で改行コードを受信:CR+LF、送信:CRに 変更。ローカルエコーにチェックをつける
  2. 設定 → シリアルポートで ボー・レートを 38400 にする


注意事項

printf は reentrant(再入可能)ではないようなので、printf 中に割り込みが入って割り込み先で printf を行う、などするとクラッシュするみたいです。メインループと Events.c 内の関数で printf を使用していると意味不明な出力が続いた後クラッシュしました。

0 件のコメント:

コメントを投稿