我一直在阅读关于访问外围设备的内存映射寄存器的问题,看起来您可以采用多种方式。例如:使用char和int访问内存映射寄存器的区别
方法1:
#define MyReg 0x30610000
volatile int *ptrMyReg;
ptrMyReg = (volatile int *) MyReg;
*ptrMyReg = 0x7FFFFFFF; /* Turn ON all bits */
方法2:
#define MyReg 0x30610000
volatile unsigned char *ptrMyReg;
ptrMyReg = (volatile unsigned char *) MyReg;
*ptrMyReg = 0x7FFFFFFF; /* Turn ON all bits */
问:是否有任何具体的原因,为什么人会选择一个比另一个?
假设:体系结构上的int大小为4个字节。
第一个选择第二个的原因是第一个会编译,第二个不会(因为你试图给'char *'分配一个int *')。 – Praetorian 2013-04-21 17:13:28
@Praetorian - 这是一个错字。修复。谢谢。 – modest 2013-04-21 17:17:50