关键字Volatile在ARM中的应用说明 ARM寄存器的访问问题

来源:互联网 发布:stc单片机 宏晶 编辑:程序博客网 时间:2024/04/29 01:59

定义样例

#define IO0PIN (*((volatile unsigned long *) 0xE0028000))

    (volatile unsigned long *) 0xE0028000

    把0xE0028000这个地址强制转换为long型指针.即对指针的操作的范围是从0xE0028000开始的4个字节(long型).

volatile 限定编译器不对这个指针的指向的存储单元进行优化,即不用通用寄存器暂时代替这个指针的指向的存储单元,而是每次取值都直接到指针的指向的存储单元取值.

    前面再用*运算附对指针取值,即寄存器的值。

 

volatile 主要用于变量会异步改变的情况下,主要有三个方面:

1.cpu外设寄存器

2.中断和主循环都会用到的全局变量

3.操作系统中的线程间都会用到的公共变量.

原创粉丝点击