指向特定的固定地址的指针

你如何给一个指针指定一个特定的内存地址?

AVR m128等微控制器中的特殊function寄存器具有固定的地址,AVR GCC在io.h头文件中定义了SFR,但我想自己处理。

好没问题。 您可以直接将其分配给一个variables:

volatile unsigned int *myPointer = (volatile unsigned int *)0x12345678; 

我通常做的是声明一个内存映射的I / Omacros:

 #define mmio32(x) (*(volatile unsigned long *)(x)) 

然后在头文件中定义我的寄存器:

 #define SFR_BASE (0xCF800000) #define SFR_1 (SFR_BASE + 0x0004) #define SFR_2 (SFR_BASE + 0x0010) 

然后使用它们:

 unsigned long registerValue = mmio32(SFR_1); // read mmio32(SFR2) = 0x85748312; // write