说一不二 发表于 2026-4-6 22:06:01

说一不二 发表于 2026-4-6 21:55
#STACK_START    具体是什么值?

我现在用SP=0x00;SPH=0x0C;来确定1K的堆栈地址为0x0C00;不知有没有问题

说一不二 发表于 2026-4-6 22:30:15

说一不二 发表于 2026-4-6 22:06
我现在用SP=0x00;SPH=0x0C;来确定1K的堆栈地址为0x0C00;不知有没有问题

有问题,程序死机了,SP=0x00;SPH=0x08; 没问题了,我的程序堆栈要2K!

狂热主宰 发表于 2026-4-7 00:05:03

说一不二 发表于 2026-4-6 21:55
#STACK_START    具体是什么值?

根据需求自定义数值

狂热主宰 发表于 2026-4-7 00:06:16

说一不二 发表于 2026-4-6 21:55
#STACK_START    具体是什么值?

可能需要自定义

zhp 发表于 2026-4-7 09:51:42

说一不二 发表于 2026-4-6 21:55
#STACK_START    具体是什么值?

STACK_START是堆栈的起始地址
如果你要自行设置堆栈初始值,则需要你自己定义这个起始地址

说一不二 发表于 2026-4-9 20:39:15

说一不二 发表于 2026-4-6 21:55
#STACK_START    具体是什么值?

设了
#define STACK_START 0x0c00
SP = (STACK_START) & 0xff);
SPH = (STACK_START >> 8) & 0xff);
程序跑死了
改为
#define STACK_START 0x0800
SP = (STACK_START) & 0xff);
SPH = (STACK_START >> 8) & 0xff);
程序正常, 就是说我的程序要2K的堆栈才行

说一不二 发表于 2026-4-9 20:42:40

说一不二 发表于 2026-4-9 20:39
设了
#define STACK_START 0x0c00
SP = (STACK_START) & 0xff);


看来,编译的提示 edata+hdata=256就是把256以上到4096的字节都给了堆栈
页: 1 [2]
查看完整版本: STC32G12K128如何控制堆栈大小