我写了一个原子开发板读写SRAM的程序,我没有按照例程的读写数据时每次地址加2,但是读写正常。我就纳闷了,原子的例程不是说配置成16位数据模式地址需要每次加2吗,但是我加的是1啊,怎么就显示正常了啊,应该是不正常啊。。。跪求大神解释。万分感谢!!!!!!!!!!!
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //存储器数据宽度为16位
/***************************
写数据
***************************/
void SRAM_Write(u8* pBuffer,u32 WriteAddr)
{
*(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;
}
/***************************
读数据
***************************/
void SRAM_Read(u8* pBuffer,u32 ReadAddr)
{
*pBuffer=*(vu8*)(Bank1_SRAM3_ADDR+ReadAddr);
}
/**************************
向指定地址写一个字节
**************************/
void fsmc_sram_test_write(u8 data,u32 addr)
{
SRAM_Write(&data,addr);
}
/**************************
向指定地址读一个字节
**************************/
u8 fsmc_sram_test_read(u32 addr)
{
u8 data;
SRAM_Read(&data,addr);
return data;
}
fsmc_sram_test_write(0x05,0x01); //向地址0x01写数据0x05
fsmc_sram_test_write(0x06,0x02); //向地址0x02写数据0x06
data_SRAM1= fsmc_sram_test_read(0x01); //读地址0x01的数据
data_SRAM2= fsmc_sram_test_read(0x02); //读地址0x02的数据
LCD_ShowxNum(30,70,data_SRAM1,6,16,0); //显示地址0x01存储的数据
LCD_ShowxNum(30,100,data_SRAM2,6,16,0); //显示地址0x02存储的数据
程序结果为:5
6
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>