历史上的今天
返回首页

历史上的今天

今天是:2025年01月13日(星期一)

正在发生

2020年01月13日 | STM32学习堆和栈(三)

2020-01-13 来源:eefocus

可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。


静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。


栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。


堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在最后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,否则,我们认为发生了内存泄漏现象。


按照这个说法,我在.s文件里面设置了:

Heap_Size EQU 0x00000000

也就是,没有任何动态内存分配。 
这样,内存=静态存储区+栈区了。 
不存在堆!!! 
因为我没有用malloc来动态分配内存。 
因此,前面提到的一切堆区,其实就是静态存储区。

另外,经过测试,确实是这样。 


STM32的内存分配,应该分为两种情况。 
1,使用了系统的malloc。 
2,未使用系统的malloc。


第一种情况(使用malloc): 
STM32的内存分配规律: 
从0X20000000开始依次为:静态存储区+堆区+栈区


第二种情况(不使用malloc): 
STM32的内存分配规律: 
从0X20000000开始依次为:静态存储区+栈区


第二种情况不存在堆区。 
所以,一般对于我们开发板例程,实际上,没有所谓堆区的概念,而仅仅是:静态存储区+栈区。 


无论哪种情况,所有的全局变量,包括静态变量之类的,全部存储在静态存储区。 
紧跟静态存储区之后的,是堆区(如没用到malloc,则没有该区),之后是栈区。

STM32内存地址一览图

上图是stm32的内存映射图,其中代码区是从0x0800 0000开始的,他的结束地址是0x0800 0000加上实际芯片的flash大小,他的ram的起始地址是0x2000 0000,然后结束地址依然是加上芯片实际的ram大小。

推荐阅读

史海拾趣

Custom LeatherCraft Manufacturing Co Inc公司的发展小趣事

在快速发展的同时,CLC也关注环保和可持续发展。他们采用环保材料和生产工艺,减少对环境的影响。同时,他们还积极推动循环利用和废物减量化措施,努力实现绿色生产。这些努力不仅提升了品牌形象,也为公司的长期发展奠定了基础。

Data Delay Devices公司的发展小趣事

在DDD公司的发展历程中,技术创新一直是其核心竞争力。公司不断投入研发资金,引进高端人才,推动产品升级换代。特别是在模拟和数字延迟线技术方面,DDD公司取得了多项重要突破。这些技术创新不仅提高了产品的性能和质量,也为公司赢得了更多客户的信任和认可。

Changzhou Galaxy Century Microelectronics Co.,Ltd公司的发展小趣事

银河微电在追求经济效益的同时,也积极履行社会责任。公司注重环保和可持续发展,在生产过程中严格控制污染排放,推广绿色生产技术。此外,银河微电还积极参与社会公益事业,捐款捐物支持灾区重建、教育扶贫等项目。这些举措不仅提升了公司的社会形象,也为公司的长远发展积累了良好的口碑。

这五个故事只是银河微电发展历程中的一部分缩影,但它们充分展示了公司在技术创新、市场拓展、资本运作、战略合作和社会责任等方面的努力和成就。正是这些因素的共同作用,使得银河微电在电子行业中脱颖而出,成为一家备受瞩目的高新技术企业。

Eagle-Picher公司的发展小趣事

1958年,Eagle-Picher公司的电池技术得到了重大的突破。在美国宇航局的探索者1号卫星上,Eagle-Picher的电池成功发射到太空,为卫星的运行提供了稳定的电源。这一里程碑式的事件标志着Eagle-Picher的电池技术在太空探索领域的应用达到了新的高度,也为公司赢得了更多的科研和商业机会。

Adafruit公司的发展小趣事

Eagle-Picher公司的历史可以追溯到1843年,最初是由Edgar和他的兄弟Stephen J. Conkling在俄亥俄州辛辛那提成立的,专注于生产商业涂料颜料。随着时间的推移,公司经历了多次转型和变革。1847年,Stephen离开公司后,Edgar引入了新的合伙人威廉·伍德,并更名为康克林木业公司。随后,公司在不同的业务领域内扩展,直到1922年,Eagle-Picher正式进入电池市场,开始了其电子行业的历程。

Electrolube公司的发展小趣事

在电子行业中,电池管理系统(BMS)的可靠性和耐用性一直是制造商关注的焦点。Electrolube公司凭借其在材料科学领域的深厚积累,成功推出了一款名为UVCL的新型UV固化涂层。这款涂层以其独特的特性迅速在市场中脱颖而出。

UVCL涂层采用先进的UV固化技术,能够在几秒钟内完成固化过程,大大提高了生产效率。同时,它还具有高效的湿气引发的二次固化机制,确保即使在阴影区域也能实现完全固化。这一特性对于BMS等复杂电子电路的保护至关重要。

为了将UVCL涂层推向市场,Electrolube公司的研发团队与客户紧密合作,克服了客户内部没有UV固化设施的难题。他们与信誉良好的供应商合作,提供了完整的解决方案,并成功为客户提供了原型样品单元进行现场测试。测试结果显示,UVCL涂层能够为电子电路提供最高水平的保护,且操作过程简单、应用速度快。

UVCL涂层的成功推出不仅提升了Electrolube公司在电子材料领域的地位,也为公司赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

高速ADC的低抖动时钟设计

来源:电子设计应用  作者:赵继勇 彭飞 引言       ADC是现代数字解调器和软件无线电接收机中连接模拟信号处理部分和数字信号处理部分的桥梁,其性能在很大程度上决定了接收机的整体性能。在A/D转换过程中引 ...…

查看全部问答>

单片机仿真器与开发板的关系

单片机中的术语:仿真器,调试器,模拟器,CPU,开发板,实验版,它们之间是什么关系?这些概念分别是什么?通俗一点就好。…

查看全部问答>

VS2005:fatal error LNK1104: 无法打开文件“WS2_32.LIB” fatal error LNK1181: 无法打开输入文件“

我想写个wince上运行的聊天软件,用的是套接字函数。 编译环境是VS2005 我在头文件中作了如下定义: #include #pragma comment(lib,\"WS2_32.LIB\") 就会有如下的错误提示: fatal error LNK1104: 无法打开文件“WS2_32.LIB” 在  ...…

查看全部问答>

到底是“谁”在影响城市公共安全

城市生活更加复杂使各种新风险应运而生。城市居民收入增加,消费水平提高,生活日新月异,人们日常生活方式和生活工具也出现了新的变化。在需求层次提升的同时,也伴生着新的安全风险。比如,汽车进入家庭,居民出行由“骑自行车”发展成为“驾驶汽 ...…

查看全部问答>

嵌入式RAD开发--VersaloonPlatform

基本特点,只做介绍,不接受评论: 1. 芯片资源足够丰富,一般用于32位嵌入式处理器,当然,8为单片机也可 2. 驱动和应用在PC上开发,使用上位机的开发环境通过usb接口调试(当然,双工总线都可以),支持Windows/Linux/MacOS等多平台。可 ...…

查看全部问答>

msp430F149通用I/O端口是否能承受5V电压接口

如题所问,打算用MSP430F149做个液晶显示装置,MSP430F149电源电压是3.3V,液晶接口电平是5V电压,想尽量简化硬件电路,能否直接和149端口相连,还是必须用3.3V转5V的芯片做缓冲,请实际用过的朋友告知一下,谢谢!…

查看全部问答>

电源功耗

现在出口到欧美的电子产品的待机功耗是多少瓦?是否是强制认证?希望能说得详细点,谢谢!…

查看全部问答>

100KHZ 以上的 LCR 电桥要如何实现呢?

以下的截图出自 HP 的阻抗量测手册 2-7 页。 上图是一般手持式的 LCR 表改采用的自动平衡电挢结构,量测频率最高到 100KHZ,网路上流传的 DIY LCR 电挢都是此种原理。 下图是量测频率 100KHZ 以上的结构图,相信桌上型的 LCR 电挢是这样做, ...…

查看全部问答>

圆点博士 MPU6050 陀螺仪DMP研究和源码

圆点博士 MPU6050 陀螺仪DMP研究和源码 陀螺仪和加速度传感器MPU6050内部集成了DMP,用于计算四元数。经过研究,终于成功应用到圆点博士小四轴飞行器上。 基本应用步骤是: 首先把固件下载到MPU6050,然后通过读取 MPU6050的FIFO,即可以直接获取 ...…

查看全部问答>

从名称认识电容在电路中的作用

小小的电容有十八般武艺,这些你都熟悉吗? 电容器在电子电路中几乎是不可缺少的储能元件,它具有隔断直流、连通交流、阻止低频的特性。广泛应用在耦合、隔直、旁路、滤波、调谐、能量转换和自动控制等电路中。熟悉电容器在不同电路中的名称意义, ...…

查看全部问答>