プロが教える店舗&オフィスのセキュリティ対策術

H8マイコンの0x600000番地につながるSRAMメモリの内容を見たくて、

#define SRAM_BASE_ADDR0x600000

#defineSRAM_TEST_ADDR*((volatile u8 *)SRAM_BASE_ADDR)

printf("data:%X addr:%p\n\r", SRAM_TEST_ADDR,(void*)&SRAM_TEST_ADDR);

このような形でアドレス0x600000番地のデータをprintf関数で出力してUARTで確認していたのですが、次の0x600001番地のデータをみたい場合はprintf関数をどのように書いたらよいのでしょうか?

A 回答 (1件)

((volatile u8 *)SRAM_BASE_ADDR)[1]


とか.
    • good
    • 0
この回答へのお礼

回答頂きありがとうございました。

printf("data:%X addr:%p\n\r", ((volatile u8 *)SRAM_BASE_ADDR)[1],&(((volatile u8 *)SRAM_BASE_ADDR)[1]));

こうゆう書き方でもいけるんですね。便利ですね。

別にこのdefineは必要ないんですね。
#define SRAM_TEST_ADDR *((volatile u8 *)SRAM_BASE_ADDR)

SRAMに書き込んで、それが正常にリードライトできるかどうかやってみたかったのですが、

たとえば、0x600001番地のアドレスにインクリメントしていくだけの時も

((volatile u8 *)SRAM_BASE_ADDR)[1] = ((volatile u8 *)SRAM_BASE_ADDR)[1] + 1;

こんなやり方でインクリメントも可能なんですね。

お礼日時:2010/01/08 17:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!