※ ChatGPTを利用し、要約された質問です(原文:I/Oレジスタアドレスを関数に引数として渡すには?)
I/Oレジスタアドレスを関数に引数として渡す方法
このQ&Aのポイント
C言語において、I/Oレジスタアドレスを関数に引数として渡す方法を知りたいです。
現在Renesas製RXマイコンでポート制御のプログラムを作成しています。I/Oポートレジスタの入出力設定を行っていますが、レジスタアドレスを引数として関数に渡し、関数内でレジスタ値を書き換える方法を教えてください。
ポインタ型を使用して関数内でレジスタ値を書き換えようとしていますが、上手くいきません。初心者なので、解決方法を教えていただけると幸いです。
I/Oレジスタアドレスを関数に引数として渡すには?
C言語について質問があるので投稿させていただきました。
現在Renesas製 RXマイコンにてポート制御のプログラムを作成しています。
そこで一点分らない点がありましたのでご教授いただければ幸いです。
現在I/Oポートレジスタの入出力設定を行っています。
レジスタ値を書き換えるだけであれば下記の通りかと思います。
#define PORTA (*(volatile unsigned char *)0x0008C00A)
PORTA = 0x01;
レジスタアドレスを引数として関数に渡し関数内でレジスタ値を書き換えるにはどうすれば
よろしいでしょうか。
void main(void)
{
setPinMode(PORTA);
PORTA.PODR.BIT.B0 = 0x01;
while(1);
}
void setPinMode(uint32_t* portNumber)
{
*portNumber = 0x01;
}
としていますが上手くいきません。
型がおかしい?
ポインタってものが分かってない?
など色々考えてはみたのですが何分初心者なので解決に至っておりません。
よろしければご教授の程よろしくお願いいたします。
お礼
ありがとうございました。無事点灯しました。因みに教えていただいた内容でやってみたのですが上手くいかず悩んでいましたが結局レジスタアドレスが違うというミスも犯していました。