OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4921|回复: 2

关于外部SRAM实验的思考,全局变量在sram

[复制链接]

13

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-9-22
在线时间
76 小时
发表于 2022-4-24 22:25:58 | 显示全部楼层 |阅读模式
100金钱
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "key.h"  
  7. #include "sram.h"   
  8. //ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé36
  9. //ía2¿SRAM êμÑé
  10. //¼¼êõÖ§3Ö£owww.openedv.com
  11. //ìÔ±|μêÆì£ohttp://eboard.taobao.com  
  12. //1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾  
  13. //×÷ÕߣoÕyμãÔ-×ó @ALIENTEK

  14.   
  15. u32 testsram[250000] __attribute__((at(0X68000000)));//2aêÔóÃêy×é
  16. //ía2¿Äú′æ2aêÔ(×î′óÖ§3Ö1M×Ö½úÄú′æ2aêÔ)            
  17. void fsmc_sram_test(u16 x,u16 y)
  18. {  
  19.         u32 i=0;            
  20.         u8 temp=0;          
  21.         u8 sval=0;        //ÔúμØÖ·0¶áμ½μÄêy¾Y                                            
  22.           LCD_ShowString(x,y,239,y+16,16,"Ex Memory Test:   0KB");
  23.         //ÿ¸ô4K×Ö½ú,D′èëò»¸öêy¾Y,×ü12D′èë256¸öêy¾Y,¸ÕoÃêÇ1M×Ö½ú
  24.         for(i=0;i<1024*1024;i+=4096)
  25.         {
  26.                 FSMC_SRAM_WriteBuffer(&temp,i,1);
  27.                 temp++;
  28.         }
  29.         //òà′&#206;&#182;á3&#246;&#214;&#174;&#199;°D′è&#235;μ&#196;êy&#190;Y,&#189;&#248;DDD£&#209;é                  
  30.         for(i=0;i<1024*1024;i+=4096)
  31.         {
  32.                   FSMC_SRAM_ReadBuffer(&temp,i,1);
  33.                 if(i==0)sval=temp;
  34.                 else if(temp<=sval)break;//oó&#195;&#230;&#182;á3&#246;μ&#196;êy&#190;Yò&#187;&#182;¨òa±èμúò&#187;′&#206;&#182;áμ&#189;μ&#196;êy&#190;Y′ó.                             
  35.                 LCD_ShowxNum(x+15*8,y,(u16)(temp-sval+1)*4,4,16,0);//&#207;&#212;ê&#190;&#196;ú′&#230;èYá&#191;  
  36.         }                                         
  37. }       

  38. int main(void)
  39. {        
  40.         u8 key;                 
  41.         u8 i=0;             
  42.         u32 ts=0;
  43.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éè&#214;&#195;&#207;μí3&#214;D&#182;&#207;ó&#197;&#207;è&#188;&#182;·&#214;×é2
  44.         delay_init(168);  //3&#245;ê&#188;&#187;ˉ&#209;óê±oˉêy
  45.         uart_init(115200);                //3&#245;ê&#188;&#187;ˉ′&#174;&#191;ú2¨ì&#216;&#194;ê&#206;a115200
  46.        
  47.         LED_Init();                                        //3&#245;ê&#188;&#187;ˉLED
  48.         LCD_Init();         //LCD3&#245;ê&#188;&#187;ˉ
  49.         KEY_Init();                                        //°′&#188;ü3&#245;ê&#188;&#187;ˉ
  50.         FSMC_SRAM_Init();                        //3&#245;ê&#188;&#187;ˉía2&#191;SRAM  
  51.         POINT_COLOR=RED;//éè&#214;&#195;×&#214;ì&#229;&#206;aoìé&#171;
  52.         LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
  53.         LCD_ShowString(30,70,200,16,16,"SRAM TEST");       
  54.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  55.         LCD_ShowString(30,110,200,16,16,"2014/5/14");   
  56.         LCD_ShowString(30,130,200,16,16,"KEY0:Test Sram");
  57.         LCD_ShowString(30,150,200,16,16,"KEY1:TEST Data");
  58.         POINT_COLOR=BLUE;//éè&#214;&#195;×&#214;ì&#229;&#206;aà&#182;é&#171;  
  59.         for(ts=0;ts<250000;ts++)testsram[ts]=ts;//&#212;¤′&#230;2aê&#212;êy&#190;Y         
  60.           while(1)
  61.         {       
  62.                 key=KEY_Scan(0);//2&#187;&#214;§3&#214;á&#172;°′       
  63.                 if(key==KEY0_PRES)fsmc_sram_test(60,170);//2aê&#212;SRAMèYá&#191;
  64.                 else if(key==KEY1_PRES)//′òó&#161;&#212;¤′&#230;2aê&#212;êy&#190;Y
  65.                 {
  66.                         for(ts=0;ts<250000;ts++)LCD_ShowxNum(60,190,testsram[ts],6,16,0);//&#207;&#212;ê&#190;2aê&#212;êy&#190;Y         
  67.                 }else delay_ms(10);   
  68.                 i++;
  69.                 if(i==20)//DS0éá&#203;&#184;.
  70.                 {
  71.                         i=0;
  72.                         LED0=!LED0;
  73.                 }
  74.         }
  75. }
复制代码
程序申请了个全局变量 然后u32 testsram[250000] __attribute__((at(0X68000000)))指定在外部虽然内存地址,但是上电应该先进main函数再初始化fsmc接口 FSMC_SRAM_Init 我很好奇初始化接口之前这个变量怎么从flash搬运到内存

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2015-9-22
在线时间
76 小时
 楼主| 发表于 2022-4-24 23:10:38 | 显示全部楼层
关键在启动文件也没找到相关初始化代码
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2070
金钱
2070
注册时间
2021-7-17
在线时间
647 小时
发表于 2022-4-25 11:37:34 | 显示全部楼层
要执行到这个变量才会搬运的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 11:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表