历史上的今天
今天是:2025年03月24日(星期一)
2020年03月24日 | STM32启动文件初探之startup_stm32f10x_hd.s(Reset_Handler函数)
2020-03-24 来源:eefocus
该文件主要实现目的:
设置初始SP
设置初始PC=Reset_Handler
设置向量表入口地址,并初始化向量表
调用SystemInit,把系统时钟配制成72M,SystemInit在库文件system_stm32f10.c定义
调转到标号_main,最终来到C程序文件
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
IMPORT SystemInit
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
第一行是程序注释,在汇编里面注释用的是“;”。
第二行是定义了一个子程序:Reset_Handler。
PROC 是子程序定义伪指令。一般用法为:
1 子程序名PROC NEAR ( 或FAR )
2 ……
3 ret
4子程序名ENDP
其中NEAR 和FAR 是属性词。 NEAR属性(段内近调用):
调用程序和子程序在同一代码段中,只能被相同代码段的其他程序调用。
FAR属性(段间远调用):调用程序和子程序不在同一代码段中,可以被相同或不同代码段的程序调用。
第三行EXPORT 表示Reset_Handler 这个子程序可供其他模块调用。
关键字[WEAK]
表示弱定义,如果编译器发现在别处定义了同名的函数,则在链接时用别处的地址进行链接,如果其它地方没有定义,编译器也不报错,以此处地址进行链接。
第四行和第五行IMPORT 说明SystemInit 和__main 这两个标号在其他文件,在链接的时候需要到其他文件去寻找。
SystemInit在库文件system_stm32f10x.c 实现,用来初始化STM32的一系列时钟,把系统时钟设置为72MHZ。STM32的时钟比51 单片机复杂,需要经过一系列的配置才能达到稳定运行的状态。
__main 其实不是我们定义的,当编译器编译时,只要遇到这个标号就会定义这个函数,该函数的主要功能是:负责初始化栈、堆,配置系统境,并在最后跳转到用户自定义的main函数,从此来到C的世界。
第六行把SystemInit 的地址加载到寄存器R0。
第七行程序跳转到R0 中的地址执行程序,之后系统的时钟就被设置成72MHZ。
第八行把_main 的地址加载到寄存器R0。
第九行程序跳转到R0 中的地址执行程序,执行完毕之后就去到我们熟知的C 世界。
第十行表示子程序的结束。
史海拾趣
|
在柯维博士的《高效能人士7个习惯》中,他提出一个有趣的观点:任何创造实际是经过2个层次,一次是“心智的创造”,另一次才是“实际的创造”。其中心智的创造尤为重要,因为它是创新的源头和起始,难度更大,更为难能可贵。心理学家马斯洛也指出, ...… 查看全部问答> |
|
单个字符接收没什么问题,多字节接收不行了!比如我要从串口调试助手送出一串字符(AAC234,7568等),单片机接收后存到缓存里?有几个菜的问题先问下:这个字符串是动态的,个数不定,是不是只要将接收数组定义大点就可以,数据处理 ...… 查看全部问答> |
|
单片机C语言视频教程 这个是提供给不能上网或者网速慢的朋友一个方便。 有条件的朋友可以到这个网站去下载:http://seemy.go.51.net 资料齐全,会都是视频教程。 51单片机C视频教程在很贴子上看到,很多朋 ...… 查看全部问答> |
|
#include<pic.h>void main(void){ANSEL=0x00;TRISIO=0x00000000; GPIO=0xff;GIE=1;while(1){}}问题: 为啥我的单片机管脚没有输出?… 查看全部问答> |
|
【问TI】LM3S系列基本上是10位ADC,与别的厂家的12位的ADC差点那?优越在什么地方? LM3S系列基本上是10位ADC,与别的厂家的12位的ADC差点那?优越在什么地方?看了个帖子说LM3S虽然ADC是10位的,但是精度非常高。专家给介绍下!… 查看全部问答> |
|
试了两款LM3S8962和LM3S9B96,问题都一样。LM3S系列能够将程序下载到内存,然后修改PC指针,在内存中运行,这样调试程序下载速度比较快,也减少了flash的读写次数,这是背景。除了一些大的程序,我都是在内存中调试,简称RAM RUN,大家可以翻翻我以 ...… 查看全部问答> |
|
2011仪器器件清单分析(全)——决战2011全国大学生电子设计竞赛 本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 决战2011全国大学生电子设计竞赛——仪器器件清单分析 格式好乱……原文可以在附件中下载!另外,有同学转载我没有意见,但烦请注明出处! 2009 2011 1.基本仪器清单 20MHz普通示波器(双通道, ...… 查看全部问答> |




