stm32f207外部SRAM编译报错

2019-07-14 13:43发布

STM32接了512K外部SRAM。可以MDK编译器不认这块内存,因为当我定义一块大的ZI区内存时,编译老报错,提示存储空间不够,(内部SRAM已经用完), 如:
uint8_t test[1024*30];

请问是MDK设置问题吗?如何让编译器识别外部SRAM,此时外部SRAM初始化放在哪里?
是否只能通过指定地址来访问?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
zaichenxi
1楼-- · 2019-07-14 18:33
谢谢楼上的建议。我这样设置过了,编译是能通过。但是有一个问题,如果设置在RAM1,系统会自动把堆栈设置在RAM1地址,而此时外部SRAM还没有初始化,内部数据是无效的值。这样会导致函数返回时,堆栈出错。
请问有什么办法解决这个问题
60user147
2楼-- · 2019-07-14 19:38
这个还需要用程序初始化外部RAM吧
maruidiyi
3楼-- · 2019-07-14 22:54
这个问题你试试下面的方法吧:
1、MDK里面设置好这个

2--找到 main(). 右键点击出来 otpin for file "main.c"后,做如下设置:

第一项选择内部的IRAM1,后面的数据选择  你的外扩RAM1。
再设置的过程中,要记得把外扩的内存初始化,最好放到systeminit()这个函数中。
 
 
zaichenxi
4楼-- · 2019-07-14 23:46
 精彩回答 2  元偷偷看……
maruidiyi
5楼-- · 2019-07-15 02:55
回复第 6 楼 于2013-09-27 16:26:54发表:
当然需要程序初始化外部SRAM。问题是在初始化之前,系统已经用了外部SRAM做堆栈了。怎样避免这种情况? 

堆栈要用内部的RAM,不要用外部的,外部的SRAM只是用来存储一些临时变量,建议你把工程文件发上来看看
freesea123
6楼-- · 2019-07-15 03:24
外部SRAM用的时候都是将变量啥的用attribute定义到指定的地址段(S外部SRAM)。
你在哪里看到的堆栈定义到外部SRAM了?

一周热门 更多>