我一直在閱讀關於訪問外圍設備的內存映射寄存器的問題,看起來您可以採用多種方式。例如:使用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