请教原子哥及各位大神:
我在做stm32f407 的SRAM实验时发现使用正点原子提供的代码测试时显示的SRAM的大小为16kb;然后写入的数据和读出的数据是乱的(硬件连接和正点原子提供的一样)。然后我改了一下测试大小的代码:
while (i < 1024 * 1024) {
fsmc_sram_write_buffer(&temp,i,1);
LCD_ShowxNum(x + 15 * 8, 170, temp, 4, 16, 0); // 显示内存容量
temp++;
i = i + 4096;
delay_ms(30);
}
delay_ms(2000);
fsmc_sram_read_buffer(&v1,0,1);
fsmc_sram_read_buffer(&v2,4096,1);
fsmc_sram_read_buffer(&v3,4096+4096,1);
fsmc_sram_read_buffer(&v4,4096+4096+4096,1);
fsmc_sram_read_buffer(&v5,4096+4096+4096+4096,1);
fsmc_sram_read_buffer(&v6,4096+4096+4096+4096+4096,1);
fsmc_sram_read_buffer(&v7,4096+4096+4096+4096+4096+4096,1);
fsmc_sram_read_buffer(&v8,4096+4096+4096+4096+4096+4096+4096,1);
fsmc_sram_read_buffer(&v9,4096+4096+4096+4096+4096+4096+4096+4096,1);
fsmc_sram_read_buffer(&v10,4096+4096+4096+4096+4096+4096+4096+4096+4096,1);
LCD_ShowxNum(x + 15 * 8, y + 20, v1, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 40, v2, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 60, v3, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 80, v4, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 100, v5, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 120, v6, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 140, v7, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 160, v8, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 180, v9, 4, 16, 0);
LCD_ShowxNum(x + 15 * 8, y + 200, v10, 4, 16, 0);
在液晶屏上显示的结果为:
0
1
2
3
0
5
6
7
0
9
其他的代码和正点原子的一样。请问是什么原因造成的,纠结好几天了。
|