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

单片机的RAM分为几个部分?

[复制链接]
2602082487 提问时间:2016-6-4 16:55 /
请问一下单片机的ram分为几个部分呢?像stm32这种哈佛结构的单片机,除了堆,栈,和全局数据部分之外,还有其他的部分吗?
还有就是如果我的程序里面定义的较大的局部数组,在MDK环境下就需要我手动的修改栈的大小是吗?请大家指导一下,谢谢。
收藏 评论15 发布时间:2016-6-4 16:55

举报

15个回答
任风吹吹 回答时间:2016-6-6 17:18:23
也就是说F103的SRAM包含内置的64K和FSMC外扩的SRAM,至于FSMC要不要外扩SRAM完全取决于你的应用设计。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

lin-425480 回答时间:2016-6-6 09:04:14
可以使用风扇加载 。cof 配置,配置RAM 的分配地址跟空间

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

wyxy163@126.com 回答时间:2016-6-6 09:09:45
提示: 作者被禁止或删除 内容自动屏蔽
埃斯提爱慕 回答时间:2016-6-6 09:14:07
提示: 作者被禁止或删除 内容自动屏蔽
衔胆栖冰 回答时间:2016-6-6 09:22:43
不同的单片机内部RAM的大小不一样,一般RAM分为几个bank,有的只有一两个,有的有好几个。有的单片机内部RAM的bank地址是连续的,有的单片机内部RAM的bank是不连续的。较大的局部数组,你可以用malloc动态申请一段内存,修改堆的大小,注意溢出问题。RAM中一般有堆、栈,还有代码执行区等

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

huaiqiao 回答时间:2016-6-6 09:45:09
下载其datashet,一般像32都有地址映射的,参考这个地址映射哈。
orima 回答时间:2016-6-6 10:40:44
最好参考對應芯片手册。。。
yubinwu_3004964 回答时间:2016-6-6 16:43:13
FIFO,DMA,低功耗时可以保存数据的RAM种种应用
任风吹吹 回答时间:2016-6-6 17:14:55
这个得看具体芯片型号的数据手册,如F103的:

sram.png
2602082487 回答时间:2016-6-6 17:38:43
任风吹吹 发表于 2016-6-6 17:18
也就是说F103的SRAM包含内置的64K和FSMC外扩的SRAM,至于FSMC要不要外扩SRAM完全取决于你的应用设计。 ...

嗯,你好像理解错了,我一楼有更具体一些的描述
lzts 回答时间:2016-6-7 08:17:02
使用RAM就看成一部分呀, 你说的那些数组, 堆, 栈, 全局变量(还有局部变量)都是由系统(也就是MDK)自动分配的. 要调整分配的栈区(调小)要熟悉汇编, 调整启动代码的. 调小太多就怕栈区溢出, 程序运行中断或函数返回不了(跑飞)

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

yuazhang 回答时间:2016-6-7 09:12:40
这个问题涉及C语言,还是把C语言的编译原理了解下吧。
2602082487 回答时间:2016-6-7 10:26:26
lzts 发表于 2016-6-7 08:17
使用RAM就看成一部分呀, 你说的那些数组, 堆, 栈, 全局变量(还有局部变量)都是由系统(也就是MDK)自动分配的 ...

MDK的分配并一定是正确的,就算在启动代码里面将栈大小改为0,MDK也不会提示错误
lzts 回答时间:2016-6-7 16:39:48
2602082487 发表于 2016-6-7 10:26
MDK的分配并一定是正确的,就算在启动代码里面将栈大小改为0,MDK也不会提示错误 ...

那就是系统的事了呀. 用到一个大的数组, 我认为纠结在是否改启动代码, 还不如选RAM大些的片子可靠.
12下一页

所属标签

相似问题

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