打印
[技术问答]

STM32和51开辟栈空间的区别在哪里?

[复制链接]
921|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
18576478035|  楼主 | 2018-12-5 18:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

使用特权

评论回复
板凳
18576478035|  楼主 | 2018-12-6 10:12 | 只看该作者
jasontu 发表于 2018-12-6 08:34
n76e003 要看你的变量有没有放在xdata,看compiler的设置
sp一定是放在data区

我定义的是256byte的局部变量数组,我想知道的是51单片机默认的栈空间大小,怎么调

使用特权

评论回复
地板
heisexingqisi| | 2018-12-6 10:23 | 只看该作者
区别大了,内核不同,内部的外设不同,寄存器名字不同,寄存器地址不同,内存空间地址不同。

使用特权

评论回复
5
18576478035|  楼主 | 2018-12-6 10:43 | 只看该作者
heisexingqisi 发表于 2018-12-6 10:23
区别大了,内核不同,内部的外设不同,寄存器名字不同,寄存器地址不同,内存空间地址不同。 ...

....我说的是栈空间的区别,你是在说啥?

使用特权

评论回复
6
jliu_nuvoton| | 2018-12-6 14:06 | 只看该作者
51的局部变量不是在栈中开辟的,51的局部变量是当作全局变量一样去分配内存的

使用特权

评论回复
7
heisexingqisi| | 2018-12-6 19:57 | 只看该作者
18576478035 发表于 2018-12-6 10:43
....我说的是栈空间的区别,你是在说啥?

都是C语言开发,你管他什么堆栈呢。貌似C语言不讲究这个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

187

帖子

2

粉丝