本帖最后由 我听闻 于 2016-12-8 11:29 编辑
- 在版本号为V3.1.0标准库中,startup_stm32f10x_hd.s 中对于堆栈顶的地址 在75行 有这样的一句话
__intial_sp EQU 0x20000400</font>
从工程生成的bin文件来看,栈顶地址确实是0x20000400,但是从.map文件来看,栈的地址范围为0x20000688 -0x20000a88,这两处不一致,而程序正常,这是为什么?CSTACK$Base 0x20000688 -- Gb - Linker created -
CSTACK$Limit 0x20000a88 -- Gb - Linker created -</font>
- 看了一些工程,有些stm32f10x_flash.icf中,定义ROM的范围时,开始的地址是从0x08003000,而不是标准的0x08000000,那么烧写bin文件的时候,会自动从0x08003000开始烧写么? 然后就是在启动配置中,从主闪存存储器启动时,主闪存存储器被映射到启动空间(0x0000 0000),这个时候能识别从0x08003000开始的代码区么?
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08003000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08003000;
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF;</font>
|