FSMC每次读写数据时要地址是要+1还是加2?原理何在?

2019-07-21 04:41发布

我写了一个原子开发板读写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





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。