目录
一,启动Flow
1.1 初始化MSP
1.2 初始化PC
1.3 设置堆栈大小
1.4初始化中断向量表
1.5 调用初始化函数(可选)
1.6 调用__main
二,Reset_Handler函数
一,启动Flow
下面是stm32在内部FLASH启动的启动建议流程图,在stm32复位到执行我们程序的main函数的过程中,最重要的就是我们的启动文件。
1.1 初始化MSP
MSP指向主堆栈的顶部,所有函数的局部变量、参数、返回值等都会存储在堆栈中。初始化MSP是为后续的程序运行准备堆栈空间。
系统复位后,处理器会从地址0x08000000处读取一个32位的值,这个值就是主堆栈指针MSP的初始值。
1.2 初始化PC
PC指向当前要执行的指令,是程序执行的控制中心。
紧随MSP之后,处理器从地址0x08000004处读取一个32位的值,这个值就是程序计数器的初始值,即程序开始执行的第一条指令的地址。