文章目录
1. 启动文件详解
1.1 启动文件的主要任务
启动文件会完成以下五件事:
- 初始化堆栈指针 SP=__initial_sp
- 初始化PC指针 PC=Reset_Handler
- 初始化中断向量表
- 配置系统时钟
- 调用C库函数__main()初始化用户堆栈,从而最终调用main函数去到C世界
1.2 启动文件中的汇编指令
汇编指令可以通过keil->help->uVision Help->搜索中查找,启动文件中的汇编指令如下:
1.3 启动代码讲解
1.3.1 栈的初始化
此处开辟栈的大小为0x00000400(1KB), 名字为STACK, NOINIT即不初始化,READWRITE表示可读可写,ALIGN=3,表示2^3=8字节对齐。栈的作用是用于局部变量,函数调用,函数形参等开销。栈是在SRAM中开辟的,因此栈的大小不能超过SRAM。如果局部变量很多,或者函数调用很深,可能需要增大栈的