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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版