DM9000_REGS为一个结构体,存放DM9000的寄存器
DM9000_REGS *g_pDM9000; //定义一个该结构体类型的指针
BYTE *pAddress;
g_pDM9000=(volatile DM9000_REGS*)pAddress;
//pAddress和g_pDM9000的类型不一样,不能直接赋值,(volatile DM9000_REGS*)是强制转换指针类型的用法,临时把pAddress转换为DM9000REGS类型的指针,骗过编译器把pAddress的值直接赋给g_pDM9000,强制转换指针类型只在当前语句有效,执行完该语句后恢复原来定义的类型,volatile表示可变的,是避免编译器优化,每次读取都从内存中读;
另一例子:
#define rBWSCON (*(volatile unsigned *)0x48000000) //把0x48000000临时转换为指针再取内容,rBWSCON就是地址0x48000000的内容;