你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32通过fsmc外扩sram,全局变量的初值乱码

[复制链接]
蓝色·冰川 提问时间:2018-5-15 17:34 /
stm32f103zet6(块1的第三小块)通过fsmc连接外部sram(is62w51216)。我修改sct文件,将fsmc的rw、zi都连到0x68000000。在线调试时发现全局变量初始值不对。fsmc.c里测试读写外部sram正常。还有,我写了fsmc.0的rw、zi均放在0x68000000,fsmc_m()里边的局部变量怎么还是映射到ram1去了?怎么将局部变量也放到ram2去?sct文件:

LR_IROM1 0x08000000 0x00080000  {   
  ER_IROM1 0x08000000 0x00080000  {  
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x68000000 0x100000  {  
   FSMC.O (+RW +ZI)
  }
}


fsmc.c文件:
unsigned long int fsmc_cnt=0x09;
char x=0x05;
void fsmc_m()
{
        unsigned char a[257]={1};
        x=x+3;
        fsmc_cnt+=5;
        a[0]=x;
        a[2]=fsmc_cnt;
        while(1);
}

收藏 评论5 发布时间:2018-5-15 17:34

举报

5个回答
toofree 回答时间:2018-5-16 01:06:05
要用fsmc外展的外部sram,必须对fsmc总线初始化。
在初始化之前,是不可能读到sram正确值的。直接在sct文件里指定不好使吧。

可能我理解你的意思不准确,请见谅

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

蓝色·冰川 回答时间:2018-5-16 10:53:20
toofree 发表于 2018-5-16 01:06
要用fsmc外展的外部sram,必须对fsmc总线初始化。
在初始化之前,是不可能读到sram正确值的。直接在sct文件 ...

我主函数文件里配置好了fsmc后才进入fsmc.c的函数里,进来的时候查看内存数据的。fsmc总线初始化≠fsmc寄存器配置吗?
蓝色·冰川 回答时间:2018-5-16 10:57:54
toofree 发表于 2018-5-16 01:06
要用fsmc外展的外部sram,必须对fsmc总线初始化。
在初始化之前,是不可能读到sram正确值的。直接在sct文件 ...

看开发板的例程居然用函数对sram读写,完全当外设模块用而不是当做运行内存用,速度可能不行,就想修改sct,编译时直接把一些变量放在外扩的sram中当片内sram用。
butterflyspring 回答时间:2018-5-16 11:37:58
下面这个例程是否看过?
\Repository\STM32Cube_FW_F1_V1.6.0\Projects\STM3210E_EVAL\Examples\FSMC\FSMC_SRAM_DataMemory

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

蓝色·冰川 回答时间:2018-5-16 20:03:36
原因找到了,我是在主函数中初始化fsmc的,实际上必须在__main之前初始化fsmc。


“__main()作为c语言的入口函数,它主要做了以下工作:

1.把RO,RW从他们的加载域复制到他们的运行域中去(可以用在LINKER中设置RO=,RW=,来确定,也可以用scatter文件来定义)
2.初始化ZI域
3.跳到__rt_entry. 而库函数__rt_entry()会完成以下工作:
1.调用__rt_stackheap_init()设置stack和heap 2.调用__rt_lib_init()初始化相应的库函数, 3.调用main(),即是我们自己的应用程序了
4.调用exit()来处理main()函数的返回值”

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版