51单片机如何开辟栈空间?

2019-07-15 07:42发布

新唐N76E003可以开辟256byte的局部数组,但是我想知道51单片机STM32的区别,STM32的栈空间是自己设置的,局部变量存放在栈中,如果局部变量定义的变量大于开辟的栈的大小,就会覆盖全局变量的值,我想知道51单片机是怎么做到开辟256byte的局部变量的,它整个内部data才256byte,怎么做到开辟256byte局部变量数组
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
xiaolu511
1楼-- · 2019-07-15 13:10
51 的堆栈空间只能在内部 256byte 中,  至于扩展的 256 字节, 可以用 pdata 或 xdata 处理.
tinlyxian
2楼-- · 2019-07-15 18:26
你定义个这个试试
char idata acBuf[256];
肯定是不行的
这个可以
char xdata acBuf[256];
另外,STM32局部变量大于栈空间也不一定会出问题,这取决于你有多少空余空间
dfasda
3楼-- · 2019-07-15 21:54
 精彩回答 2  元偷偷看……
tinlyxian
4楼-- · 2019-07-15 22:54
默认是一个字节大小(可以修改大小),但是没有被分配的idata空间其实都是堆栈,甚至已经分配的也是堆栈,因为堆栈自动改变,是不会检查是否出问题的,一般也无法检查

启动文件是这样定义堆栈的
RSEG    ?STACK
                 DS      1
dfasda
5楼-- · 2019-07-16 02:30
使用增强型51(xdata768byte)定义256byte局部数组程序会出问题吗?我测试可以开辟成功但是会不会导致局部变量覆盖全局变量的值
lifei639156
6楼-- · 2019-07-16 04:20
只能定义在pdata或xdata空间,idata,data,bdata空间是不可以的

一周热门 更多>