volatile關鍵字

volatile關鍵字;ide

在進行各種地址定義時,每每用到volatile關鍵字,volatile的意思是「不穩定的」。優化

volatile修飾的變量,程序在每次訪問時,都會直接訪問該變量的內存空間,而不是對寄存器進行訪問(若是變量沒有進行volatile修飾,那麼若是有屢次訪問,編譯器會將其優化而將值存入寄存器,接下來的訪問都會直接在寄存器裏面操做,而不訪問變量所在的內存);spa

個人理解是,變量名就至關於地址,只是地址前加了「*」而已,若是要給寄存器添加變量,那麼能夠使用內存

爲表示方便定義一個32位無符號數據類型:typedef u32 unsigned long 編譯器

(u32*)0x7F008820;這一步表示0x7F008820所指數據爲32位整型;it

*((u32*)0x7F008820);這樣就能夠直接取得地址所指的值了;編譯

最後一步定義:class

#define GPMCON *((u32*)0x7F008820)變量

咱們就能夠在C語言裏面經過 u32 i=GPMCOM 來訪問它了。也能夠經過GPMCOM=i來賦值;數據類型

這裏沒有使用volatile,由於GPMCON的值,是隻會經過程序改變的,不會由於外界緣由而發生改變;不像CPSR同樣。

相關文章
相關標籤/搜索