u8 system_exsram_test(u16 x,u16 y,u8 fsize) {
u32 i=0; u16 temp=0; u16 sval=0;
//在地址0读到的数据
LCD_ShowString(x,y,lcddev.width,y+fsize,fsize,"Ex Memory Test: 0KB");
//每隔1K字节,写入一个数据,总共写入1024个数据,刚好是1M字节
for(i=0;i<1024*1024;i+=1024)
{
FSMC_SRAM_WriteBuffer((u8*)&temp,i,2); temp++;
//依次读出之前写入的数据,进行校验
for(i=0;i<1024*1024;i+=1024)
{
FSMC_SRAM_ReadBuffer((u8*)&temp,i,2); if(i==0)sval=temp; else if(temp<=sval)break;
//后面读出的数据一定要比第一次读到的数据大.
LCD_ShowxNum(x+15*(fsize/2),y,(u16)(temp-sval+1),4,fsize,0);
//显示内存容量
}
红色部分,说每隔1k字节写一个数据,那么i的大小就是代表了字节数,这里i的大小是怎么和sram的字节数联系起来的?
i本身不是32位的吗。
i为0的时候是 0000 0000 0000 0000 0000 0000 0000 0000
i为 1024的时候是 0000 0000 0000 0000 0000 0100 0000 0000
i为 2048的时候是 0000 0000 0000 0000 0000 1000 0000 0000
理论上i在u32的范围内不是随便取值的吗。 u32: [0, ffffffff] [0, 4294967295]
为什么会和字节数连到一起,i计数记到4294967295,字节数也是4294967295吗,明显不应该啊
|