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

2019-07-14 16:19发布

请问一下单片机的ram分为几个部分呢?像STM32这种哈佛结构的单片机,除了堆,栈,和全局数据部分之外,还有其他的部分吗?
还有就是如果我的程序里面定义的较大的局部数组,在MDK环境下就需要我手动的修改栈的大小是吗?请大家指导一下,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
mzxcz
1楼-- · 2019-07-15 09:17
FIFO,DMA,低功耗时可以保存数据的RAM种种应用
充电搜索
2楼-- · 2019-07-15 14:16
 精彩回答 2  元偷偷看……
zkzk196599
3楼-- · 2019-07-15 16:56
充电搜索 发表于 2018-11-5 09:33
也就是说F103的SRAM包含内置的64K和FSMC外扩的SRAM,至于FSMC要不要外扩SRAM完全取决于你的应用设计。

嗯,你好像理解错了,我一楼有更具体一些的描述
hongliwei
4楼-- · 2019-07-15 22:15
使用RAM就看成一部分呀, 你说的那些数组, 堆, 栈, 全局变量(还有局部变量)都是由系统(也就是MDK)自动分配的. 要调整分配的栈区(调小)要熟悉汇编, 调整启动代码的. 调小太多就怕栈区溢出, 程序运行中断或函数返回不了(跑飞)
horayte
5楼-- · 2019-07-15 23:00
这个问题涉及C语言,还是把C语言的编译原理了解下吧。
zkzk196599
6楼-- · 2019-07-16 02:28
hongliwei 发表于 2018-11-5 11:54
使用RAM就看成一部分呀, 你说的那些数组, 堆, 栈, 全局变量(还有局部变量)都是由系统(也就是MDK)自动分配的. 要调整分配的栈区(调小)要熟悉汇编, 调整启动代码的. 调小太多就怕栈区溢出, 程序运行中断或函数返回不了(跑飞)

MDK的分配并一定是正确的,就算在启动代码里面将栈大小改为0,MDK也不会提示错误

一周热门 更多>