曲径通幽论坛

标题: 寄存器宏定义 [打印本页]

作者: beyes    时间: 2009-10-29 11:07
标题: 寄存器宏定义
比如在 S3C2410 里:
#define rGPACON   (* (volatile unsigned *) 0x56000000)   //Port A 控制寄存器
#define rGPADAT    (* (volatile unsigned *)0x56000004)       //Port A 数据寄存器

像 0x56000000 是寄存器的物理地址,单这么一个数字看,就是一个整数。在使用地址时,需要转换。 (volatile unsigned *) 0x56000000 表明强制转化(声明) 0x56000000 这个整数表示的是一个地址。使用 volatile 是防止编译器优化导致数据读写出错。这时候,0x56000000 已经表示一个地址(指针),那么读写时和普通的指针形式( *p = 1024 ,p 这里相当于 (volatile unsigned *) 0x56000000) 一样, * (volatile unsigned *)0x56000004 = 1024




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2