本文目录一览

1,Keil C51堆栈的起始地址STACK 怎么确定

编译器根据你程序代码中使用内存的多少自动设定堆栈的大小。

Keil C51堆栈的起始地址STACK 怎么确定

2,求助诺基亚5200与3110他们各自的java堆栈是多少

你说的是内存堆栈吧5200最多2兆,3110也就700、800KB

求助诺基亚5200与3110他们各自的java堆栈是多少

3,用keil 怎么得知一个程序堆栈的大小

使用keil编写软件时,应根据你的器件型号,引入相应的头文件,程序写完后,可以将程序编译成相应器件的HEX文件,然后用烧录器将这个HEX文件写到器件中去。
在startup_stm32f10x_md.s中靠近顶部的位置,有一段改写一下就可以了stack_size equ 0x00000200

用keil 怎么得知一个程序堆栈的大小

4,在keil中怎样才能修改单片机堆栈的指针十万火急

释放内存不应该用改SP的办法来实现,效果不好,而且很危险,KEIL已经为你考虑到了各种情况,你乱改,程序反而会出错。节约内存办法有很多,1、尽量用格式小的数据,能用char不用int,能用bit不用char;2、尽量少定义全局变量3、将几个不会同时用到的变量定义到同一个地址上去,当然在定义的时候要想清楚4、尽量避免大数组,如果必须用,也尽量用指针来替换5、减少函数嵌套所以说,内存就像水,挤挤总能有的,关键是你用不用心

5,LPC1768程序中的堆栈空间应该设置为多少

使用keil MDK调试程序使用LPC1768控制一些电磁铁,使用上位机控制电磁铁,都可以单独控制,但是用传感器控制电磁铁,控制一个电磁铁,其他电磁铁也动作,所调用的函数一样的,不知怎么回事。经过分析,发现是堆栈问题,堆栈太小,局部变量被覆盖。增加堆栈大小。在startup_LPC17xx.s文件中, Stack_Size EQU 0x00000200 改为 Stack_Size EQU 0x00000250就解决了问题后来发现,不是这个问题,而是IO设为输入与输出的问题。
我是来看评论的

6,51单片机用keil的变量堆栈

尽管51可以通过栈操作的方式传递变量,但在通过C语言编译产生的代码当中,压栈和出栈操作更多的是用于保护操作,防止子程序调用造成一些寄存器的误修改。而局部变量则尽可能使用访问速度最快的或执行代码最少的内部RAM,比如工作寄存器R0~R7等。堆栈一般是汇编语言编程时需要考虑的问题,在C语言里可以不考虑堆栈,编译器会根据情况做优化,设定堆栈的起始地址和大小。另外需要说明一下:至少在51中堆栈与RAM不是独立的两个部件,堆栈空间包含于直接寻址的内部RAM中,其它的CPU我不了解,就不敢说了。其实内部RAM及外部RAM都可以用于保存局部变量:1、内部直接寻址RAM(data):地址0x00H->0x7F的内部RAM,长度128字节2、内部间接寻址RAM(idata):地址0x80H->0xFF的内部RAM,长度128字节3、可位寻址RAM(bdata):地址0x20H->0x3F的内部RAM,长度16字节4、外部RAM(xdata):标准空间地址0X0000-->0XFFFF5、及按页访问的外部RAM(pdata):一般用的不多。软件编程人员可以根据具体要求声明变量的存储类型进而确定使用哪个区域,或者在编译选项中选择数据存储模式。如果不做特殊声明,只要资源够用,一般编译器都会自动优化选择访问速度最快的直接寻址内部RAM(也就是0x00->0X7F范围内的RAM)。
一般用keil2或者keil3,keil4 keil5主要用于开发stm32单片机,用来开发51单片机反而不方便
不是放在堆栈里面放在公共RAM域如果用IAR编译器的话,就是在堆栈里面

7,keil 单片机 为什么 堆栈深度 默认为 一字节

keil会分析你的程序使用堆栈情况,会自动安排堆栈的;keil安排堆栈后,就没有默认了
尽管51可以通过栈操作的方式传递变量,但在通过c语言编译产生的代码当中,压栈和出栈操作更多的是用于保护操作,防止子程序调用造成一些寄存器的误修改。而局部变量则尽可能使用访问速度最快的或执行代码最少的内部ram,比如工作寄存器r0~r7等。堆栈一般是汇编语言编程时需要考虑的问题,在c语言里可以不考虑堆栈,编译器会根据情况做优化,设定堆栈的起始地址和大小。另外需要说明一下:至少在51中堆栈与ram不是独立的两个部件,堆栈空间包含于直接寻址的内部ram中,其它的cpu我不了解,就不敢说了。其实内部ram及外部ram都可以用于保存局部变量:1、内部直接寻址ram(data):地址0x00h->0x7f的内部ram,长度128字节2、内部间接寻址ram(idata):地址0x80h->0xff的内部ram,长度128字节3、可位寻址ram(bdata):地址0x20h->0x3f的内部ram,长度16字节4、外部ram(xdata):标准空间地址0x0000-->0xffff5、及按页访问的外部ram(pdata):一般用的不多。软件编程人员可以根据具体要求声明变量的存储类型进而确定使用哪个区域,或者在编译选项中选择数据存储模式。如果不做特殊声明,只要资源够用,一般编译器都会自动优化选择访问速度最快的直接寻址内部ram(也就是0x00->0x7f范围内的ram)。
采纳答案是错误的。keil,不会自动安排堆栈的。堆栈空间的大小,必须由编程者自己来控制。堆栈深度,也没有默认值。堆栈深度是多少,这要根据你的程序而定。

文章TAG:keilkeil  堆栈  多少  
下一篇