[技术问答] STM32和51开辟栈空间的区别在哪里?

[复制链接]
136|6
 楼主 | 2018-12-5 18:31 | 显示全部楼层 |阅读模式

我试了下新唐N76E003可以开辟256byte的局部数组,但是我想知道51单片机和STM32的区别,STM32的栈空间是自己设置的,局部变量存放在栈中,如果局部变量定义的变量大于开辟的栈的大小,就会覆盖全局变量的值,我想知道51单片机是怎么做到开辟256byte的局部变量的,它整个内部data才256byte,怎么做到开辟256byte局部变量数组
| 2018-12-6 08:34 | 显示全部楼层
n76e003 要看你的变量有没有放在xdata,看compiler的设置
sp一定是放在data区
 楼主 | 2018-12-6 10:12 | 显示全部楼层
jasontu 发表于 2018-12-6 08:34
n76e003 要看你的变量有没有放在xdata,看compiler的设置
sp一定是放在data区

我定义的是256byte的局部变量数组,我想知道的是51单片机默认的栈空间大小,怎么调
| 2018-12-6 10:23 | 显示全部楼层
区别大了,内核不同,内部的外设不同,寄存器名字不同,寄存器地址不同,内存空间地址不同。
 楼主 | 2018-12-6 10:43 | 显示全部楼层
heisexingqisi 发表于 2018-12-6 10:23
区别大了,内核不同,内部的外设不同,寄存器名字不同,寄存器地址不同,内存空间地址不同。 ...

....我说的是栈空间的区别,你是在说啥?
| 2018-12-6 14:06 | 显示全部楼层
51的局部变量不是在栈中开辟的,51的局部变量是当作全局变量一样去分配内存的
| 2018-12-6 19:57 | 显示全部楼层
18576478035 发表于 2018-12-6 10:43
....我说的是栈空间的区别,你是在说啥?

都是C语言开发,你管他什么堆栈呢。貌似C语言不讲究这个。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表