轉載自:http://www.cnblogs.com/zhangpengshou/p/3597646.html
#define GPJ2CON (*(volatile unsigned long *) xE0200280)
開始對于上面的文法不太了解,但通過拆分,我們可以看的更明白:
1、
(unsigned long *)
變量,代表“變量”是一個unsigned long類型的指針;例如:
(unsigned long *)i
,語句中 i 即為
(unsigned long *)
的一個指針;
2、volatile是一個修飾符,告訴編譯器此段代碼不要優化;是以,
(volatile unsigned long *)
變量,意思是未優化指針類型的變量;例如:
(volatile unsigned long *)i
,語句中 i 即為
(volatile unsigned long *)
的一個指針;
3、
(volatile unsigned long *) 0xE0200280
,此處把變量換成了固定位址,意思是
(volatile unsigned long *)
指針指向固定的位址 0xE0200280
4、前面再加一個
*
,即
(volatile unsigned long *) 0xE0200280
代表 GPJ2CON 是一個變量,我們既可以給固定位址中指派,也可以從固定位址中取值。例如:
(volatile unsigned long *)i
,語句中 i 即為
(volatile unsigned long *)
的一個指針,而
*i
即代表 i 中存儲的值,我們既可以對其指派,又可以從其中取值