概述
#define VIC_BASE_ADDR 0xFFFFF000
#define VICIRQStatus (*(volatile unsigned long *)(VIC_BASE_ADDR + 0x000))
直接修饰代表一个地址VIC_BASE_ADDR + 0x000,而用指针修饰则代表VIC_BASE_ADDR + 0x000地址处的值
volatile 类型却是是这样的, 其数据确实可能在未知的情况下发生变化
比如,硬件设备的终端更改了它
现在硬件设备往往也有自己的私有内存地址,比如显存
他们一般是通过映象的方式,反映到一段特定的内存地址当中
这样,在某些条件下,程序就可以直接访问这些私有内存了
另外,比如共享的内存地址, 多个程序都对它操作的时候
你的程序并不知道,这个内存何时被改变了
如果不加这个voliatile修饰,程序是利用catch当中的数据,那个可能是过时的了
加了,就在需要用的时候,程序重新去那个地址去提取,保证是最新的
最后
以上就是贪玩钢笔为你收集整理的(*(volatile unsigned long *)的全部内容,希望文章能够帮你解决(*(volatile unsigned long *)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复