LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test: 0KB");
//每个地址写入一个数据,总共写入1024*1024个数据,刚好是1M字节
temp =0;
for(i=0;i<1024*1024;i++)
{
FSMC_SRAM_WriteBuffer(&temp,i,1);
temp+=1;
}
//依次读出之前写入的数据,进行校验
for(i=0;i<1024*1024;i++)
{
FSMC_SRAM_ReadBuffer(&temp,i,1);
if(temp != i)
{
delay_ms(10); // 如果进入这个条件,说明写入和读出的数据不一致,有异常
}
}
如果把代码改成上面的,调试发现能进入异常条件中,即写入和读出的数据不一致,此时i=256
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void fsmc_sram_test(u16 x,u16 y)
{
u32 i=0;
u32 temp=0;
u32 sval=0; //在地址0读到的数据
LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test: 0KB");
//每隔16K字节,写入一个数据,总共写入2048个数据,刚好是32M字节
for(i=0;i<32*1024*1024;i+=16*1024)
{
*(vu32*)(Bank5_SDRAM_ADDR+i)=temp;
temp++;
}
//依次读出之前写入的数据,进行校验
for(i=0;i<32*1024*1024;i+=16*1024)
{
temp=*(vu32*)(Bank5_SDRAM_ADDR+i);
if(i==0)sval=temp;
else if(temp<=sval)break;//后面读出的数据一定要比第一次读到的数据大.
LCD_ShowxNum(x+15*8,y,(u16)(temp-sval+1)*16,5,16,0); //显示内存容量
printf("SDRAM Capacity:%dKB ",(u16)(temp-sval+1)*16);//打印SDRAM容量
}
}
[/mw_shl_code]
这是准备搞429或是以上型号的节奏啊
一周热门 更多>