向某个寄存器(地址0x56000000)写入数据0x010,用c怎么写呢?
首先看如下例子:
int a;
int *p;
p=&a;
如果让a=0x010,只需要a=0x010或*p=0x010。
这里p是a的地址,如果a的地址为0x56000000,那么p=0x56000000,用c怎么表示呢?
答案为:p=(int *)0x56000000
那么如果给这个地址赋值0x010,就可以写为:*((int *)0x56000000)=0x010。
因为这是给寄存器赋值,为了防止编译器优化掉,需要加volatile,于是就写为:
*((volatile int *)0x56000000)=0x010。
那么标准的写法如下:
#define REG *((volatile int *)0x56000000)
REG=0x010;