STM32启动模式

STM32启动模式(自举模式)
M3/M4/M7内核复位后的第一件事:
1:从地址0x0000 0000处取出堆栈指针MSP的初始值,这个值就是栈顶地址。
2:从地址0x0000 0004处取出程序计数器指针PC的初始值,这个值是复位向量。
对于H1系列:在系统复位后,SYSCLK的第四个上升沿,BOOT引脚的值会被锁存。

BOOT1BOOT0启动模式0x00000000映射地址0x00000004映射地址
x0主闪存存储器0x080000000x08000004
01系统存储器0x1FFFF0000x1FFFF004
11内置SRAM0x200000000x20000004

通过判断BOOT引脚的连接情况识别启动模式,如设置为BOOT0 = 0 ,BOOT1 = x 时,选择主闪存存储器,把0x08000000映射到0x00000000,从0x08000000获取MSP的初始值,这个值就是栈顶地址;从0x08000004获取PC的初始值,这个值是复位向量。此时程序会立刻去执行Reset_Handler。
在这里插入图片描述
Reset_Handler函数在启动文件startup_stm32f103xe.s中定义
Reset_Handler函数介绍:
在这里插入图片描述
EXPORT: 标明全局属性,可被外部调用
IMPORT: 申明来自外部文件,类extern
PROC: 定义子程序
ENDP:表示子程序结束
WEAK:弱定义

Reset_Handler中执行了两个程序,SystemInit 和__main。首先会调用 SystemInit 函数来初始化系统时钟等参数。在__main函数中,会初始化内核的寄存器,划分堆空间(如果使用到的话)和栈空间。最后会调用main()函数执行用户写的代码。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值