关于外部sram读写问题

2019-08-17 08:19发布

        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++;
        }
这样就可以,没问题,问什么,好奇怪

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
好少年
1楼-- · 2019-08-18 08:12
正点原子 发表于 2017-6-12 13:52
你打印的都不是同一个值。。。

大哥,您再看看。。。。。。
好少年
2楼-- · 2019-08-18 11:22
fghlw 发表于 2017-6-13 08:40
这程序会老打出一样的东西把

是第一次打印的是错的,就是说全部写完再读取就出错
fghlw
3楼-- · 2019-08-18 15:53
好少年 发表于 2017-6-13 08:42
对啊,但实际上不是呢,第二次打印的和第一次打印的不一样,第二次打印的是错的,我很无语

“第二次”指的是哪个?
好少年
4楼-- · 2019-08-18 16:11
 精彩回答 2  元偷偷看……
fghlw
5楼-- · 2019-08-18 17:00
好少年 发表于 2017-6-13 09:26
是第一次打印的是错误的,
        for(i=0;i

我没用过这个函数,不过查了下是这样的:
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
读定义应该也一样。就是把“i”地址读了1字节写到temp里

但你打印的是“temp_fsmc”这个值  与temp有什么关系。觉得原子说的是对的。
好少年
6楼-- · 2019-08-18 22:08
正点原子 发表于 2017-6-12 13:52
你打印的都不是同一个值。。。

大哥,我复制错了,但是是一样的值结果也是不一样,我想问的是这个,而且在使用
u32 testsram[25000] __attribute__((at(0X68000000)));//测试用数组
这个数组时,我写入一组数据,读出来的时候第一个字节老是出错,但是把u32改为u8就好了,也不清楚为什么

一周热门 更多>