文件名称:stm32启动过程详解
文件大小:71KB
文件格式:DOC
更新时间:2016-03-19 16:21:29
stm32 启动
详细解释了32的启动过程 如程序清单一,STM32的启动代码一共224行,使用了汇编语言编写,这其中的主要原因下文将会给出交代。现在从第一行开始分析: ? 第1行:定义是否使用外部SRAM,为1则使用,为0则表示不使用。此语行若用C语言表达则等价于: #define DATA_IN_ExtSRAM 0 ? 第2行:定义栈空间大小为0x00000400个字节,即1Kbyte。此语行亦等价于: #define Stack_Size 0x00000400 ? 第3行:伪指令AREA,表示 ? 第4行:开辟一段大小为Stack_Size的内存空间作为栈。 ? 第5行:标号__initial_sp,表示栈空间顶地址。 ? 第6行:定义堆空间大小为0x00000400个字节,也为1Kbyte。 ? 第7行:伪指令AREA,表示 ? 第8行:标号__heap_base,表示堆空间起始地址。 ? 第9行:开辟一段大小为Heap_Size的内存空间作为堆。 ? 第10行:标号__heap_limit,表示堆空间结束地址。 ? 第11行:告诉编译器使用THUMB指令集。 ? 第12行:告诉编译器以8字节对齐。 ? 第13—81行:IMPORT指令,指示后续符号是在外部文件定义的(类似C语言中的全局变量声明),而下文可能会使用到这些符号。 ? 第82行:定义只读数据段,实际上是在CODE区(假设STM32从FLASH启动,则此中断向量表起始地址即为0x8000000)