私は埋め込みコードに取り組んでおり、メモリマップされた多くのレジスタ割り当てをget()/ set()関数呼び出しに変換しようとしています。コード全体に散らばったアドレス割り当てを維持できるかどうか疑問に思いましたが、関数の引数として割り当てを受け取るように#definesを変更します。
古い方法:
#define MOTOR_REG (*(volatile unsigned char *)(0xFEE002)); //a memory-mapped register
MOTOR_REG = value; //sets value into the memory-mapped register
望ましい新しい方法:
#define MOTOR_REG( set_motor_reg(value); )
void set_motor_reg(unsigned char)
{
//logic to set the motor register
}
MOTOR_REG = value; //value should be passed in to MOTOR_REG macro
では、このシナリオはCマクロで可能ですか?あなたの考えをありがとう!