Renesas Synergy™

FAQ 1000124 : R8C,M16Cファミリ用Cコンパイラパッケージの標準入出力関数を使用して、UART入出力を行ないたい。

Q : 質問

R8C,M16Cファミリ用Cコンパイラパッケージの標準入出力関数(printf,scanf等)を使用して、UART入出力を行ないたいのですが思うようにできません。


A:回答

標準ライブラリの標準入出力関数(※1)には次の制限があります。この制限が正常に動作しない原因である可能性があります。

  • r8clib.libの標準入出力関数はR8C/1x,2x向けのため、R8C/3x,Lx,Mx向けには適していません。
  • R8CファミリでROMサイズが64KB以上のマイコンではnc30lib.libをリンクしますが、nc30lib.libの標準入出力関数はM16Cシリーズ向けのため、R8Cファミリ向けには適していません。
  • nc30lib.libの標準入出力関数では、U1TBレジスタのアドレスを3AAhとしています。U1TBレジスタのアドレスが25Ahのマイコン(M16C/64,65等)には適していません。
  • 標準入力関数(scanf等)向けの低水準関数には受信バッファレジスタをリードするサイズに誤りがあります。

M16Cシリーズ,R8Cファミリ用Cコンパイラパッケージ(M3T-NC30WA) V.5.42 Release 00 ~ V.5.45 Release 01の場合、Device File Updater V.1.07を適用することで問題を解消できます。詳細はRENESAS TOOL NEWS 資料番号101116/tn2を参照ください。

上記以外の製品の場合、以下に示す方法で上記の制限を解除することができます。

ご使用のマイコンに適合するdevice.cファイルを以下からダウンロードして、 ユーザプログラムと一緒にコンパイルしてリンクしてください。(※2)

ダウンロード device_c_files.zip

device_c_files.zip を解凍してください。

以下の各フォルダの中にマイコンに適合するdevice.cファイルが格納されています ので、必要なものをご使用ください。

摘要 フォルダ名
(1) R8C/1xまたはR8C/2xシリーズをご使用の場合 R8C/1x、R8C/2x用
(2) R8C/3xまたはR8C/Lxシリーズをご使用の場合 R8C/3x、R8C/Lx用
(3) R8C/Mxシリーズをご使用の場合 R8C/Mx用
(4) M16Cシリーズをご使用で、U1TBレジスタのアドレスが3AAhの場合 M16C U1TBアドレスが3AAh用
(5) M16Cシリーズをご使用で、U1TBレジスタのアドレスが25Ahの場合 M16C U1TBアドレスが25Ah用
(6) M32Cシリーズのマイコンをご使用の場合 M32Cシリーズ用
(7) R32Cシリーズのマイコンをご使用の場合 R32Cシリーズ用

device.cファイルでは、デフォルトで標準入出力としてUART1を使用します。 UART0を使用する場合は、device.cファイルの先頭に"#define __UART0__"を追記するか、または、コンパイルオプション"-D__UART0__"を指定してコンパイルしてください。 UART1を持っていないマイコン(R8C/2E, /32A, /M11A等)をご使用の場合も、この方法で UART0に切り換えてください。

※1 標準入出力関数は、次の標準入力関数および標準出力関数を示します。
標準入力関数:fgetc, getc, getchar, fgets, gets, fread, scanf, およびfscanf
標準出力関数:fputc, putc, putchar, fputs, puts, fwrite, printf, fprintf, vfprintf, およびvprintf

※2 High-performance Embedded Workshop を使用している場合は、device.cファイルをプロジェクトに登録してください。既にdevice.cファイルが存在する場合は差し換えてください。

なお、M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ(M3T-NC30WA)V.6では適切なdevice.cを生成するように改善しています。

 

(FAQ 1000137 on global site)

 

適用製品

M32Cシリーズ用Cコンパイラパッケージ [M3T-NC308WA]
M16Cシリーズ,R8Cファミリ用C/C++コンパイラパッケージ [M3T-NC30WA]
R32Cシリーズ用Cコンパイラパッケージ
R8C, M16Cファミリ用C/C++コンパイラパッケージ

 

他にご質問がございましたら、リクエストを送信してください