こんにちは。triangleです。
RX63NのRSPIを用いてSPI通信の初期設定から送信、
別チャンネルで送信データを受信するプログラムを作成しました。
サンプルプログラム等に投稿しましたので、参考になればと思います。
ソフト
http://japan.renesasrulz.com/cafe_rene/m/sample_program/367
説明書
http://japan.renesasrulz.com/cafe_rene/m/sample_program/368
やな さん、こんにちは。NoMaYです。hwsetup.hというファイルは元々から無いですね。以下のファイルはルネサスさんの統合開発環境でプロジェクトを作成した時に生成されるソース(.c/.h)ファイルですが、その時点で存在してないです。(なぜhwsetup.hを用意しなかったかはルネサスさんでないと分からないです。) それで、推測ですが、今回質問されたのは、ワーニングレベルを上げたら警告が出た、とかかなぁ、と思ったのですが、少し調べてみました。triangleさんのプロジェクトのソース(PDG2が生成したPDG2独自のソースは除かれている)
dbsct.chwsetup.cintprg.ciodefine.hlowlvl.srclowsrc.clowsrc.hresetprg.csbrk.csbrk.hstacksct.htypedefine.hvect.hvecttbl.cRSPI_RX63N.c
調べて分かったのは、私のプロジェクトはhwsetup.c内の唯一の関数HardwareSetup()を使っておらず、HardwareSetup()を呼び出す唯一のソースresetprg.cでは以下のようにコメントアウトされていて、警告が出ない筈である、ということでした。(これは統合開発環境でプロジェクトを作成した時からそうなっている。) 対して、triangleさんのプロジェクトではHardwareSetup()が使われていても、extern宣言側がコメントアウトされたままになっていました。本来は、HardwareSetup()を使う場合、こちらもコメントアウトを解除しないと望ましくないですね。私のプロジェクト: resetprg.cは以下のままで問題無い
//#ifdef __cplusplus // Use Hardware Setup//extern "C" {//#endif//extern void HardwareSetup(void);//#ifdef __cplusplus//}//#endif
// HardwareSetup(); // Use Hardware Setup nop();
triangleさんのプロジェクト: resetprg.cのextern宣言側がコメントアウトされたまま
HardwareSetup(); // Use Hardware Setup nop();
[追記]上で「なぜhwsetup.hを用意しなかったかはルネサスさんでないと分からないです」と書きましたが、なんとなくポリシーみたいなものなのかなぁ、とは感じています。ポリシーかな?と思うもの:呼び出す側と呼び出される側のソースが別々であっても、呼び出す側のソースが唯一で決まりきっている場合、.hファイルにextern宣言やprototype宣言を記述せずに(またはヘッダファイルを用意せずに)、.cファイル内にextern宣言やprototype宣言を記述する。
やな さん、こんにちは。NoMaYです。> mainのプログラムの中でhwsetup.hが定義されていないのですが、関連付けはどこでおこなわれているのでしょうか?本件、私の先日のリプライで疑問は解消されたでしょうか?