对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解

时间:2021-03-30 02:27:07

#define GPBCON (*(volatile unsigned long*)0x56000010)

1:volatile

  当计算机需要一个数值的时候,会先把内存中的值读取到寄存器,然后下次在使用该值的时候就直接读取寄存器中的值了。加上volatile之后,程序就会在每次需要该值的时候都读取一次内存。这是为了防止某些原因硬件会改变其值。

2:

  (volatile unsigned long *)即为强制类型转换;(volatile unsigned long *)0x56000010 的意思就是把0x56000010强制转换为unsigned long类型的指针。这时(volatile unsigned long *)0x56000010就可以看做是一个指针p了。*(volatile unsigned long*)0x56000010等价于*p,也就是取指针p的地址(取0x56000010的地址)。

  此时整句话的句意也就不难理解了。

原文:http://www.cnblogs.com/ngnetboy/p/3305004.html