单片机的内存分配详解

发布者:科技思想家最新更新时间:2023-07-15 来源: zhihu关键字:单片机  内存分配  静态变量 手机看文章 扫描二维码
随时随地手机看文章

对于初学者而言,对单片机的内存分配往往最让人头疼,很多人学了单片机几年 都不知道单片机内部的内存使用情况是如何分配的。要了解 ROM、RAM启动,首先 需要对 链接器 Linker 如何分配内存有一定的了解。


通常,对于栈生长方向向下的单片机,其内存一般模型是:





一个进程运行时,所占用的内存,可以分为如下几个部分:
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。
2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS释放。
3、全局变量、静态变量:初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。程序结束后由系统自动释放。
4、文字常量:常量字符串就是存放在这里的,程序结束后由系统释放。
5、程序代码:存放函数体的二进制代码。


关键字:单片机  内存分配  静态变量 引用地址:单片机的内存分配详解

上一篇:单片机---ICC总线EEPROM理论
下一篇:11种常见的单片机电路设计模块

推荐阅读最新更新时间:2024-11-12 14:59

关于单片机的仿真
因为总是习惯于用multisim进行简单电路的仿真,总感觉相比其他软件,它非常人性化。最近师弟用Proteus进行单片机的仿真,我就尝试着用它再来试试,在网上查了很多资料。搞了一天,你以为搞出来了?no,没有!总是到最后的地方出现了问题。而且网上好多都没有涉及这些地方的说明,很多也是汇编语言写的。用c的还都通不过。估计应该是我那个地方还没有注意到,才出现这种情况。然后我又尝试着用Proteus,同样又是半天,好在搞出来了一个LED闪烁的例子。参照的网上资料,起码是实现了仿真。 原理图如下: 代码如下: #include #define uchar unsigned char #define uint unsigned
[单片机]
51单片机原理及应用--片内结构
51单片机片内结构如下: 8位CPU CPU包括运算器及控制器。运算器主要负责单片机的运算功能,控制器主要负责识别指令。 数据存储器(256B RAM) 数据存储器为随机存储器,即我们通常所说的内存(这里所说的内存与PC的内存有所差别,单片机是哈佛机构,PC是冯诺依曼结构),一般我们C语言命名的动态变量就保存在这里。 程序存储器(8KB ROM) 程序存储器为只读存储器,这里所说的只读是指单片机正常运行状态下的只读,因为在下载程序时是可以写的,程序存储器主要保存程序以及静态变量,静态变量即我们C语言编程时用static修饰的变量,这种变量是只能一次定义,不能修改。 4个8位I/O口 51单片机共有32个通用
[单片机]
单片机一键多功能控制
家知道单片机的IO口资源是非常宝贵的,特别是当我一个工程项目比较大的时候,我们在利用按键的时候,我们除了可以用矩阵键盘以外,我们还有一种办法可以实现减少IO口但却实现多功能的控制。这样就可以为我节省了IO口,那么这个方法是什么呢?这就是我今天刚学的一个按键多种功能的控制。而且这次我还就效果及程序作了一定的讲解,当然我不是一个专业的老师,而且我不是以营利为目的,我只是抱着让我空间见证我的进步,还有让看到我日志,想学单片机而没有一点基础的朋友不要像我走那么多弯路,少走一些弯路的目的。顺便多结交一些热爱单片机的朋友,当然如果你是高手,希望高手们不要见笑。或者您觉得有更好的办法也请您多多指点。我会虚心向您们学习的,大家一起在交流中进步。 参
[单片机]
AT89C51单片机对智能语音拨号报警系统的设计
随着人们生活水平的提高和安防意识的增强, 急需开发面向大众、价格低廉、运行可靠的自动报警系统。鉴于住宅电话和移动通信设备的普及, 以及电话语音报警的快捷、有效及价格低廉等优点, 公共通信网成了报警系统的最佳传输媒介。本文介绍的报警系统就是在此基础上发展起来的一种智能语音拨号报警系统, 该系统可广泛用于各种对安防要求较高的场合, 如智能楼宇、商场、银行和工厂等。 电话自动报警的主要功能为: 用户根据需要把自己的手机号码、办公室电话或报警监控中心的电话预存入报警主机。报警主机不断地对所监控的设备( 门禁、烟雾探测器、窗磁、摄像头等) 状况进行巡检, 当有不安全情况( 如火灾、非法入室、视频丢失等) 发生时, 报警主机拨通预先存入的
[单片机]
AT89C51<font color='red'>单片机</font>对智能语音拨号报警系统的设计
51单片机矩阵键盘PROTEUS仿真演示
原文地址: 51单片机矩阵键盘PROTEUS仿真演示(图、程序) 作者: 给力哈哈 程序如下: #include AT89x52.h #define uchar unsigned char; uchar key_val=0; //定义键值,初始默认为0 uchar code TAB ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xC6,0xa1,0x86,0x8e}; //0~F 共阳数码管显示段码 void Check_Key(void) { unsigned char row,
[单片机]
MCU引爆2018涨价新行情
车用电子芯片龙头恩智浦开出今年全球微控制器芯片调涨第一枪,市场预期可能缺货一整年,后市有机会带动相关台股上下游供应链,迎来一波涨价题材。 文.李彦纬 台股反映产品报价调涨的行情持续,半导体“MCU(微控制器芯片)”及全球汽车电子芯片龙头大厂NXP(恩智浦),宣布第一季开始,旗下产品线皆调涨报价,恰好搭上台股近期火热到不行的“涨价题材”热潮,预料有望带动MCU相关台厂未来股价表现,成功复制前几波如:矽晶圆、存储器、原物料、MOSFET、被动元件等类股,因反映产品报价调涨而走出亮眼涨升波段。 MCU涨价大厂鸣枪起跑  今年恐将缺货一整年 NXP宣布将自第一季开始调涨旗下多个产品线全线报价,其中,MCU调涨6%,数位网路
[半导体设计/制造]
GD32 MCU如何将烧录口配置为GPIO使用?
如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置为GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置以及有哪些注意事项,本视频将会为大家进行解答。 GD32 MCU存在两种GPIO备用功能的配置,一种是采用成组重映射REMAP的模式,比如GD32F10X/20x/30x/e10x/E50X等系列,一种是采用AFIO模式,比如GD32F1X0/3X0/4XX/E230等。 成组reamp重映射的模式需要将一组的GPIO进行重映射,如下图GD32F30X IIC0的重映射配置,PB6和PB8需要组合使用,PB7和PB9需要组合使用,而PB6和PB9就不可以组合使用。 AFIO
[单片机]
GD32 <font color='red'>MCU</font>如何将烧录口配置为GPIO使用?
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved