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一样。


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