|
#define A (*(volatile unsigned long *)0x48000000) 9 T3 v2 W6 q) W) ^. I2 O
...
" A9 R. V) P7 n A = 0x01;
, q! D5 Q: Z5 o6 M...
$ R. U" I3 O5 M 这实际上就是内存映射机制的方便性了。其中 volatile 关键字是嵌入式系统开发的一个重要特点。上述表达式拆开来分析,首先(volatile unsigned long *)0x48000000的意
1 B* k6 `2 X1 o4 l m1 J思是把 0x48000000 强制转换成 volatile unsigned long 类型的指针,暂记为 p,那么就是, h& s, l" v! E6 i
#define A *p, 即A 为P 指针指向位置的内容了。 这里就是通过内存寻址访问到寄存器 A,
* {% ~; s$ H( t: V7 b! X( K可以读/写操作。 9 I. T; { P) v9 E- O
用 GCC 编译时。volatile 所指示的寄存器不进行优化!!!
0 e, k' Q& d- y, a; @0 l |
|