我正在研究嵌入式代码并尝试将大量内存映射寄存器分配转换为 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 宏可以实现这种情况吗?谢谢你的想法!