Startup Code 可以译为启动代码。单片机上电或复位后最先执行的一段代码。一般主要会完成堆栈指针的设置,复位向量的获取和加载,然后初始化变量,最后跳转到用户代码。
启动流程
工程编译完成后生成的bin文件,称为BIN文件。改文件依次存放着中断向量表(Vector Table),然后依次存放程序代码和其他数据,如上图所示。
中断向量表的第一项为栈顶指针MSP(Main Stack Pointer)的初值,第二项为复位向量,它指向了程序的第一个指令,即复位处理函数Reset_Handler。如下图所示。
如上图所示,MCU复位时,依次完成三个任务:
- 从向量表的第一项(@0x00000000)中取出MSP初值
- 从复位向量(@0x00000004)中取出Reset_Handler函数地址
- 跳转到Reset_Handler函数位置并执行,复位完毕后跳转到main函数开始执行!
- 在Reset_