首先,小白一个,还没入门,高手别见笑,多包涵
如题,最近在看用stm32的FSMC驱动dm9000a的例程,用的bank1,FSMC_A16与DM9000a的CMD连接,16bit模式,FSMC_A[24:0]对应HADDR[25:1],有几行C语言代码不是很明白,在下边
#define DM9000_IO_CMD *((__IO uint16_t *)0x60000000) //
#define DM9000_IO_DATA *((__IO uint16_t *)0x60020000) //
......
static u16 ior(u16 reg)
{
u16 read_data = 0;
DM9000_IO_CMD = reg;
read_data = DM9000_IO_DATA;
return read_data;
}
*((__IO uint16_t *)0x60000000)这个表达式意思是:这是个指针的指针?转不过来了,谁能说明白一些?为什么是16位?
最后谁有关于FSMC或是DM9002单片机驱动的资料,比较详细的。手上资料不全,都是直接上了TCP/UIP的,程序太大了,只想要一个很简单的,访问以下寄存器,发个数据什么的,现在还不会用呢.
跪求,,,,,,,,
此帖出自
小平头技术问答
意思是把0x60020000的类型强制转为16位无符号整形的地址, *((__IO uint16_t *)0x60020000)实际上就是读取该地址的参数值,DM9000_IO_DATA 也就代表这个参数值,并且是一个占2个字节内存空间的参数值。后面那个函数返回的实际上也就是0x60020000这个地址的参数值。
一周热门 更多>