单片机/MCU论坛
直播中

的撒的

10年用户 742经验值
擅长:可编程逻辑
私信 关注
[问答]

在startup_m051series.s中Stack_Size设为0x400起什么作用,可以设为0吗?

请教大侠:在startup_m051series.s中Stack_Size设为0x400起什么作用,可以设为0吗?谢谢

回帖(2)

熊洁

2024-1-16 10:23:02
startup_M051series.s中Stack_Size的大小决断了MSP指针的位置,也决定了中断所能使用的堆栈的大小;因此,这个值在程序运行时是不能设为0的,否则会出现使用堆栈时破坏公用变量的值的现象;但我们可以在编译时将它设为0,这样可以得到程序所使用的内存的精确大小,然后用RAM的总量减去使用了的内存大小就可以得到Stack_Size的值,这样可以在程序运行时将MSP设到RAM的顶端。
举报

糖栗子

2024-1-16 16:57:27
在startup_m051series.s文件中,Stack_Size的作用是指定堆栈的初始大小。堆栈是用来保存函数调用的返回地址、局部变量和函数参数等信息的内存区域,它的大小必须足够存放当前程序中最深的函数调用链。

设定Stack_Size为0x400表示堆栈大小为1024字节。如果Stack_Size设为0,表示堆栈的大小为0字节,这样会导致堆栈溢出,无法正确保存函数调用的返回地址、局部变量和函数参数等信息,可能会导致程序错误或崩溃。

通常情况下不建议将Stack_Size设为0,需要根据实际情况来设定堆栈的大小,以确保程序正常运行并避免堆栈溢出的问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分