STM32
登录
直播中
石玉兰
7年用户
1411经验值
私信
关注
[问答]
STM32单片机是如何进行启动的
开启该帖子的消息推送
STM32
单片机
函数
STM32
单片机
是如何进行启动的?
STM32单片机启动的过程是怎样的?
回帖
(1)
秦文汶
2021-11-25 10:06:35
本文详细介绍STM32单片机启动的过程,既从上电Reset_Handle跳转到main()函数的过程。其中,会着重解释__main的汇编代码
STM32启动过程
1. 从Reset_Handler开始启动
Reset_Handler的代码如下,参考《startup_stm32f10x_hd.s》
1-计算SystemInit函数入口地址,并把地址load到R0;
R0 = [PC + 24] = [0x08000144 + 24 +4] = [0x08000160] = 0x08000495
2 – 执行r0所指向的函数,既 SystemInit();同时,把下一条指令的地址(既PC+4)保存到lr(r14)中
3 – 计算__main的入口地址,并load到r0
4 – 执行__main()
__main 的执行过程
__main函数内容
SP(R13)赋值
SP = [pc +12 +4] = [0x08000130 + 12 + 4] = [0x08000140] = 0x20000408
执行 __scatterload() (地址0x08000168),并load R14, lr = 0x08000139
__scatterload函数执行过程
__scatterload_copy执行过程
__scatterload_zeroinit执行过程
__main_after_scatterload执行过程
本文详细介绍STM32单片机启动的过程,既从上电Reset_Handle跳转到main()函数的过程。其中,会着重解释__main的汇编代码
STM32启动过程
1. 从Reset_Handler开始启动
Reset_Handler的代码如下,参考《startup_stm32f10x_hd.s》
1-计算SystemInit函数入口地址,并把地址load到R0;
R0 = [PC + 24] = [0x08000144 + 24 +4] = [0x08000160] = 0x08000495
2 – 执行r0所指向的函数,既 SystemInit();同时,把下一条指令的地址(既PC+4)保存到lr(r14)中
3 – 计算__main的入口地址,并load到r0
4 – 执行__main()
__main 的执行过程
__main函数内容
SP(R13)赋值
SP = [pc +12 +4] = [0x08000130 + 12 + 4] = [0x08000140] = 0x20000408
执行 __scatterload() (地址0x08000168),并load R14, lr = 0x08000139
__scatterload函数执行过程
__scatterload_copy执行过程
__scatterload_zeroinit执行过程
__main_after_scatterload执行过程
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
单片机
函数
单片机
是如
何进行
分类的?主要分为哪几类?
2021-07-08
1823
单片机
存储是如
何进行
分配的
2022-02-25
1511
单片机
中的
单片
与双片存储器是如
何进行
连线的
2022-01-21
909
8051
单片机
与PC
机
是如
何进行
通信的?
2021-10-08
1546
PLC与
单片机
硬件是如
何进行
通信的
2021-08-12
2434
如
何进行
单片机
的IAP代码编写?
2021-12-17
1602
如
何进行
单片机
语音播放
2011-11-06
6167
请问一下
单片机
是如
何进行
升级的?
2021-07-08
988
SD卡与
单片机
是如
何进行
连接的
2021-09-18
2315
315MHz无线模块和
单片机
如
何进行
直接通信?
2023-10-19
373
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分