请问关于外扩SRAM的问题

2019-08-17 05:31发布

例程中实验36 外部SRAM实验的测试程序如下:
void fsmc_sram_test(u16 x,u16 y)
{  
        u32 i=0;            
        u8 temp=0;          
        u8 sval=0;                                            
          LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:   0KB");
        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);
                if(i==0)sval=temp;
                else if(temp<=sval)break;                  
                LCD_ShowxNum(x+15*8,y,(u16)(temp-sval+1)*4,4,16,0);
        }                                         
}       

我的疑问:1、这样的做法是否类似于读写FLASH? 将外部SRAM当作外部FLASH使用?
               2、如果我要使用串口接收大量的数据,需要定义几个很大的接收数组(内部RAM不够用),应该如何使用外部的SRAM?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
taizonglai
1楼-- · 2019-08-17 06:20
本帖最后由 zuozhongkai 于 2017-6-25 20:09 编辑

1、这样写跟读写flash有很大的区别,至少了SRAM是可以直接对某个地址进行读写的,直接访问要读写的地址即可,flash在写的时候要做复杂的擦除操作!
2、直接定义数组,让数组的地址指向外部SRAM即可!很简单的东西,参考内存管理函数里面定义外部内存的内存池的方式,使用__attribute(at())这样的语句
突触延搁
2楼-- · 2019-08-17 10:00
谢谢你,能否发一份“内存管理函数里面定义外部内存池”的例程,1334117037@qq.com

一周热门 更多>