volatile關鍵字

volatile關鍵字;

在進行各類地址定義時,往往用到volatile關鍵字,volatile的意思是“不穩定的”。

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

我的理解是,變量名就相當於地址,只是地址前加了“*”而已,如果要給寄存器添加變量,那麼可以使用

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

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

*((u32*)0x7F008820);這樣就可以直接取得地址所指的值了;

最後一步定義:

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

我們就可以在C語言裏面通過 u32 i=GPMCOM 來訪問它了。也可以通過GPMCOM=i來賦值;

這裏沒有使用volatile,因爲GPMCON的值,是隻會通過程序改變的,不會因爲外界原因而發生改變;不像CPSR一樣。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章