单片机堆栈溢出怎么解决?

发布者:csw520最新更新时间:2015-03-18 来源: diangon关键字:单片机  堆栈溢出 手机看文章 扫描二维码
随时随地手机看文章
我认为单片机堆栈溢出最重要的原因是我们编程序有问题,即在程序设计初期没有留出足够的空间供堆栈使用,堆栈一旦溢出程序一般会乱指,就是我们所说的程序跑分。一般我们不容许出现这个现象,因此我们在设计程序的时候首先要在内部RAM里开辟一段连续的地址当堆栈使用,且只能让它通过PUSH和POP指令进行访问,而且每次访问堆栈后注意别让堆栈溢出。
STC单片机堆栈溢出的解决方法
RAM模式用large,尽量用XRAM,减少函数嵌套层数,如果一个函数只被一个函数调用,就尽量合并下。
编译器会根据片内RAM消耗量自动确定SP指针,而且51也只能用片内RAM做堆栈。
KEIL C51的堆栈不需要你去设置的,编译器会把DATA ram剩余的空间都划分给栈,所以尽量减少对DATA的使用。
关键字:单片机  堆栈溢出 引用地址:单片机堆栈溢出怎么解决?

上一篇:单片机地址空间堆栈的理解
下一篇:单片机硬件系统的扩展和配置设计原则

推荐阅读最新更新时间:2024-03-16 13:55

技术文章—MCU如何扩展CAN或者CAN FD接口?
摘要:在嵌入式产品开发过程中,可能会面临CAN路数不够的问题。如何选择合适的转换模块解决这个问题呢?以下将为您讲解几款模块的选型方法。 应用场景 CAN总线是优秀的现场总线之一,已由当初的汽车电子扩散到各行各业。从工业自动化到新能源,从轨道交通再到航空航天,CAN总线技术在中国不断的应用和沉淀。 图1 CAN总线数据帧结构 当应用CAN总线时,我们可能会面临以下问题:主控制器没有支持CAN控制器或者CAN路数不够。具体问题表现:早期产品通信使用的是RS485或RS232通信,现阶段需要将产品升级到能支持到CAN通信;受制于成本限制,主控MCU必须选择低端处理器,本身不带CAN控制器
[汽车电子]
技术文章—<font color='red'>MCU</font>如何扩展CAN或者CAN FD接口?
瑞萨与第10所著名大学合作 吉林大学MCU基础讲座开讲
近日,由株式会社瑞萨科技与中国吉林大学电子科学与工程学院共同开设的“瑞萨微控制器原理及应用”(以下简称瑞萨MCU基础讲座),在中国吉林大学举行了隆重的开讲仪式。 吉林大学是目前全国办学规模最大的高校,学科门类几乎涵盖了各行各业。吉林大学的电子科学与工程学院是中国电子工程领域规模大,专业水平高的学院,毕业生多数就职于知名IT企业。此次与吉林大学的合作,是瑞萨继与清华大学、北京大学、上海交通大学、西安交通大学等国内著名高等院校合作之后,目前为止在国内开设“MCU基础讲座”课程的第10所国家重点大学。此前瑞萨参加了吉林大学所在的长春市的ITS基础设施构筑计划,07年6月开始已经进入实验阶段。而通过此次讲座,瑞萨更增强了与当地大学之间的
[单片机]
基于51单片机的智能小车(遥控模块寻迹避障)
在淘宝购买的寻迹模块+自己做的小车底盘 测试成功 #include reg52.h sbit P1_0 = P1^0; sbit P1_1 = P1^1; sbit P1_2 = P1^2; sbit P1_3 = P1^3; sbit P1_4 = P1^4; sbit P1_5 = P1^5; sbit P1_6 = P1^6; sbit P1_7 = P1^7; sbit P2_0 = P2^0; sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; sbit P2_5 = P2^5; sbit P2_6 = P2^6; sbit P2
[单片机]
我的TLC2543学习笔记——基于msp430g2553单片机
Created on: 2012-9-8 Author: zhang bin 学习笔记 for msp430g2553 redesigned by zhang bin 2012-09-08 versions :12_09_01 All Rights Reserved TLC2543具有4线制串行接口,分别为片选端(CS),串行时钟输入端(I/O CLOCK),串行数据输入端(DATA IN)和串行数据输出端(DATA OUT)(转换结束脚EOC可以不接)。它可以直接与SPI器件进行连接,不需要其他外部逻辑。同时,它还在高达4MHz的串行速率下与主机进行通信。 TLC254
[单片机]
51单片机中断设置
外部中断系统框图: 这些中断请求源的中断请求标志位分别有特殊功能寄存器TCON和SCON的响应位锁存 1、TCON寄存器 与中断有关的是低四位。 1)IT0和 IT1——外中断请求触发标志位: 0——为低电平触发; 1——为下降沿触发 可由软件置位和清除 2)IE0 和 IE1——外部中断请求标志位 1——表示有中断请求,CPU要响应中断请求,跳向中断服务程序,按优先级处理中断程序,跳入中断服务程序时,由硬件清0; 0——表示没有中断请求。 复位值TCON都为0。 SCON为串口控制寄存器,详见串口。 2、中断允许寄存器IE,可以位寻址,复位为0: 各位为1时允许相应位的中断,为0时禁止响
[单片机]
STM32F030C8T6微控制器的主要特性介绍
STM32F030C8T6微控制器是一款32位M0系列LQFP-48 单片机,性价比很高的ARM单片机,在电动车及家电行业中应用较为广泛,针对STM32F030C8T6单片机破解。 STM32F030X4/X6/X8/XC微控制器在-40至+85°C的温度范围内工作,电源电压为2.4至3.6V。一套全面的省电模式允许设计低功耗应用程序。STM32F030x4/X6/X8/XC微控制器包括四个不同封装的设备,从20针到64针不等。根据所选设备,包括不同的外围设备。 这些功能使STM32F030x4/X6/X8/XC微控制器适用于各种应用程序,如应用程序控制和用户界面、手持设备、A/V接收器和数字电视、PC外围设备、游戏和GPS平
[单片机]
STM32F030C8T6<font color='red'>微控制器</font>的主要特性介绍
MCS-51单片机指令系统“读-改-写”方式指令
51 单片机有四个 8 位的并行接口。由于内部结构的特点,并行接口在输出 0、1 的时候,能力是不一样的。输出 0 的时候,能力较强,但输出 1 的时候,能力就很差了,而 P0 口,则要外接上拉电阻才能输1。 单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。单片机在进行端口输出时,经常要参考其上一次的输出状态。 Example:使一个LED灯闪烁。编程序时需要从输出引脚读前一次的输出状态,然后将其求反输出。如果上次是输出“1”使LED点亮,这时候虽然端口上输出逻辑是“1”,但是由于LED的二极管作用将输出高电平拉至“0”电平(0.7V左右),通过引脚读进来就是
[单片机]
51单片机学习——中断
1、中断源及其中断标志 外部中断0:中断号为0;中断标志为IE0;中断服务程序入口为0003H; 定时器0:中断号为1;中断标志为TF0;中断服务程序入口为000BH; 外部中断1:中断号为2;中断标志为IE1;中断服务程序入口为0013H; 定时器1:中断号为3;中断标志为TF1;中断服务程序入口为001BH; 串行口:中断号为4;中断标志为R1或T1;中断服务程序入口为0023H; 2、中断允许控制 CPU对中断系统所有中断及其某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。IE的状态可通过程序由软件设定。某位设定为1,相应的中断源中断允许;某位设定为0,相应的中断源中断屏蔽。CPU复位时,IE各位清0,禁止所有中断。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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