c语言请教

[复制链接]
 楼主| lskam 发表于 2013-7-18 09:19 | 显示全部楼层 |阅读模式
小弟在做一个stm32读nand flash的试验。。

#define Bank2_NAND_ADDR    ((uint32_t)0x70000000)
#define Bank_NAND_ADDR     Bank2_NAND_ADDR
#define CMD_AREA                   (uint32_t)(1<<16)
#define ADDR_AREA                  (uint32_t)(1<<17)
#define NAND_CMD_AREA                *(__IO uint8_t *)(Bank_NAND_ADDR | CMD_AREA)
#define NAND_ADDR_AREA                *(__IO uint8_t *)(Bank_NAND_ADDR | ADDR_AREA)

uint32_t NAND_ReadID(void)
{
        uint32_t data = 0;
        NAND_CMD_AREA = 0x90;
        NAND_ADDR_AREA = 0x00;
        data = *(__IO uint32_t *)(Bank_NAND_ADDR | DATA_AREA);
   data =  ((data << 24) & 0xFF000000) |
           ((data << 8 ) & 0x00FF0000) |
           ((data >> 8 ) & 0x0000FF00) |
           ((data >> 24) & 0x000000FF) ;
   return data;
}
这是一个读nand flash id的函数。我真心看不懂。NAND_CMD_AREA和NAND_ADDR_AREA根据宏定义不是一个固定值吗?这个在函数里还给它们赋值啊,NAND_CMD_AREA = 0x90;NAND_ADDR_AREA = 0x00;还有data = *(__IO uint32_t *)(Bank_NAND_ADDR | DATA_AREA);这个是什么意思啊,。求解,大虾们
568581185 发表于 2013-8-25 19:12 | 显示全部楼层
好像发错板块了?
1988020566 发表于 2013-8-25 23:22 | 显示全部楼层
这个是根据地址写的。
1988020566 发表于 2013-8-25 23:22 | 显示全部楼层
需要根据读写io的地址来操作的。
smilingangel 发表于 2013-8-26 00:01 | 显示全部楼层
我也看不大明白这个程序的,求大侠指点的:L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

128

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

56

主题

128

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部