在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从“复位”到“开始执行 main 函数”中间这段启动时间所必须进行的工作。它完成的具体工作有:
初始化堆栈指针SP=_initial_sp
初始化PC指针=Reset_Handler
初始化中断向量表
配置系统时钟
调用C库函数_main初始化用户堆栈,从而转向我们用户应用程序的main。
汇编指令
打开STM32的启动文件会发现,里面全部都是汇编语句,对于汇编指令不了解的朋友来说可能一头雾水。下面我们按照启动文件内指令出现的顺序来介绍,相信可以了解到大概情况。
EQU:给数字常量取一个符号名, 相当于C语言中的预处理命令define。其常用格式如下:
Stack_Size EQU 0x00000400
表示将0x00000400这个数值,用Stack_Size名代替。
AREA:汇编一个新的代码段或者数据段。常用格式如下:
AREA STACK, NOINIT, READWRITE, ALIGN=3
表示汇编一个数据段,名字是STACK,NOINIT表示不初始化,READWRITE表示可读可写,ALIGN表示字节对齐,通常后面会赋一个立即数,比如ALIGN=3表示的就是2^3字节对齐,即8字节对齐。
SPACE:分配一定大小的内存空间,单位为字节。常用格式如下:
Stack_Mem SPACE Stack_Size
表示给Stack_Mem分配一个Stack_S
STM32入门系列-启动文件介绍
最新推荐文章于 2024-04-25 15:02:17 发布