将寄存器定义为C中的宏



我正试图用C语言(初级-大学级别(解决一个项目,但我在一个函数中遇到了一个小问题。

我有两个定义为宏的寄存器:

#define register1 0x02004000
#define register2 0x02004200

我想访问第一个寄存器的内容,并将第二个寄存器的属性放入其中。

我做以下事情:

*register1 = *register2 + 2 

但它不会起作用,因为"#定义";将寄存器定义为int。

那么,如何使用#define访问寄存器呢?

(这可能是一个糟糕的命题,但我仍在学习C:D(

您需要将常量强制转换为适当的指针类型。

因此,例如,如果这些中的每一个都指向一个int,您将执行以下操作:

#define register1 ((int *)0x02004000)
#define register2 ((int *)0x02004200)

从技术上讲,你所拥有的并不是寄存器,而是内存地址。寄存器是CPU的一部分,没有地址。

最新更新