for(i=0;i<1024*1024;i+=4096)
{
FSMC_SRAM_WriteBuffer(&temp,i,1);
temp++;
}
//依次读出之前写入的数据,进行校验
for(i=0;i<1024*1024;i+=4096)
{
FSMC_SRAM_ReadBuffer(&temp,i,1);
printf("%d
", temp_fsmc);
}
在做外部sram实验时,运行这段代码,会出现读取的数和写入的有些区别,但是如果一个字节写入,一个字节读取,把代码改成这样
for(i=0;i<1024*1024;i+=4096)
{
FSMC_SRAM_WriteBuffer(&temp_fsmc,i,1);
FSMC_SRAM_ReadBuffer(&temp_fsmc_2,i,1);
printf("%d
", temp_fsmc_2);
temp_fsmc++;
}
这样就可以,没问题,问什么,好奇怪
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
大哥,您再看看。。。。。。
是第一次打印的是错的,就是说全部写完再读取就出错
“第二次”指的是哪个?
我没用过这个函数,不过查了下是这样的:
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
读定义应该也一样。就是把“i”地址读了1字节写到temp里
但你打印的是“temp_fsmc”这个值 与temp有什么关系。觉得原子说的是对的。
大哥,我复制错了,但是是一样的值结果也是不一样,我想问的是这个,而且在使用
u32 testsram[25000] __attribute__((at(0X68000000)));//测试用数组
这个数组时,我写入一组数据,读出来的时候第一个字节老是出错,但是把u32改为u8就好了,也不清楚为什么
一周热门 更多>