就一个外部SRAM实验调试的实验程序我平时都用来当作例程加入到其他的程序中,当然想要实现自己的功能需要自己去实际的调试。。
单片机源码:
- #include "sys.h"
- #include "delay.h"
- #include "key.h"
- #include "lcd.h"
- #include "sram.h"
- u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组
- //外部内存测试(最大支持1M字节内存测试)
- void fsmc_sram_test(u16 x,u16 y)
- {
- u32 i=0;
- u8 temp=0;
- u8 sval=0; //在地址0读到的数据
- LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test: 0KB");
- //每隔4K字节,写入一个数据,总共写入256个数据,刚好是1M字节
- 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);//显示内存容量
- }
- }
- int main(void)
- {
- u8 key;
- u32 ts=0;
- Stm32_Clock_Init(9); //系统时钟设置
- delay_init(72); //延时初始化
- LCD_Init(); //初始化LCD
- KEY_Init(); //按键初始化
- FSMC_SRAM_Init(); //初始化外部SRAM
- POINT_COLOR=RED; //设置字体为红色
- LCD_ShowString(60,50,200,16,16,"XYD 2014.01.16");
- LCD_ShowString(60,70,200,16,16,"SRAM TEST");
- LCD_ShowString(60,110,200,16,16,"KEY1:Test Sram");
- LCD_ShowString(60,130,200,16,16,"WK_UP:TEST Data");
- POINT_COLOR=BLUE;//设置字体为蓝色
- for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据
- while(1)
- {
- key=KEY_Scan(0);//不支持连按
- if(key==KEY_DOWN)fsmc_sram_test(60,170);//测试SRAM容量
- else if(key==KEY_UP)//打印预存测试数据
- {
- for(ts=0;ts<250000;ts++)LCD_ShowxNum(60,190,testsram[ts],6,16,0);//显示测试数据
- }
- }
- }
复制代码
所有资料51hei提供下载:
外部SRAM实验.zip
(154.94 KB, 下载次数: 15)
|