启动文件的问题

2019-08-30 09:07发布

本人使用的是STM32F103系列,加载的启动文件是startup_stm32f10x_hd.s版本是3.0.0的,其中一段是
Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  __main

                LDR     R0, = SystemInit_ExtMemCtl ; initialize external memory controller
                BLX     R0

                LDR     R1, = __initial_sp        ; restore original stack pointer
                MSR     MSP, R1                  

                LDR     R0, =__main
                BX      R0
                ENDP
请问SystemInit_ExtMemCtl和__initial_sp是什么作用,启动文件的内容可以自己添加吗


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
augustedward
1楼-- · 2019-08-30 10:40
SystemInit_ExtMemCtl 主要用来配置系统时钟及FLASH,RAM。__initial_sp是栈地址指针。熟悉的话可以自己添加
ziyan0005
2楼-- · 2019-08-30 12:20
augustedward 发表于 2017-3-13 11:27
SystemInit_ExtMemCtl 主要用来配置系统时钟及FLASH,RAM。__initial_sp是栈地址指针。熟悉的话可以自己添加

我看_md.s和_ld.s里没有这两个,为什么呢
augustedward
3楼-- · 2019-08-30 16:46
 精彩回答 2  元偷偷看……
ziyan0005
4楼-- · 2019-08-30 17:59
augustedward 发表于 2017-3-13 12:36
这个主要是版本的不同,之前的版本是在main里去做这些事情的,后来的版本放到main之前做了

是同一版本的不同容量的.s文件,只有大容量的有SystemInit_ExtMemCtl和__initial_sp,您说的main是系统的main吗?在哪个文件能看到
augustedward
5楼-- · 2019-08-30 18:34
ziyan0005 发表于 2017-3-13 12:43
是同一版本的不同容量的.s文件,只有大容量的有SystemInit_ExtMemCtl和__initial_sp,您说的main是系统的 ...

是系统的main,我之前用103时就遇到过这种问题。.s里没有的话,就要到main函数里调用。

一周热门 更多>