• ベストアンサー

H8 外部バスのデータアクセス

H8 外部バスのデータアクセス ルネサスのH8マイコン初心者です。(C言語も初心者です) 外部バスのCS1(0x200000)に512KBのSRAMが繋がっているのですが、 HEWのセクションを変更せず、直接SRAMに対して読み書きしたいと思っています。 バスコントローラは設定済みという前提で以下の(A)~(C)のように 宣言すればデータの読み書きは出来ると思うのですが、 (A)~(C)を配列や構造体として扱いたい場合、どのように宣言すれば 良いのでしょうか? (A) #define SRAM1 (*(volatile unsigned int*)(0x200000)) (B) #define SRAM2 (*(volatile unsigned int*)(0x200002)) (C) #define SRAM3 (*(volatile unsigned int*)(0x200004)) (D) SRAM1 = 1; (E) SRAM2 = 2; (F) SRAM2 = 3; よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.1

こんにちは。 配列は、(A)~(C)と、C言語の参考書を交互にじっくり眺めていけば、答えが出そうな気がします。もうちょっとです。 構造体については、HEWが作ってくれるiodefine.hを参考にされてはいかがでしょうか。

jag777jag
質問者

お礼

pyonmaeさん、ご回答頂きありがとうございます。 早速 iodefine.h を参考に書き直してみました。 現在実機が手元に無いので確認出来ないのですが、こんな感じでしょうか? 実機がある場所へ戻ったら確認してみます。 struct st_sram1 { int wk1[10]; }; struct st_sram2 { char cdata; int idata; }; #define SRAM1 (*(volatile struct st_sram1 *)(0x200000)) #define SRAM2 (*(volatile struct st_sram2 *)(0x200014)) #define SRAM3 (*(volatile unsigned int*)(0x200017)) SRAM1.wk1[0] = 1; SRAM1.wk2[1] = 2; SRAM2.idata = 1; SRAM3 = 1;

jag777jag
質問者

補足

お礼欄に書いた内容にミスがありました。 すみません。 SRAM1.wk2[1] = 2; → SRAM1.wk1[1] = 2;   

関連するQ&A

専門家に質問してみよう