当前位置:   article > 正文

STM32启动模式_reset handler

reset handler

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()函数执行用户写的代码。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/713264
推荐阅读
相关标签
  

闽ICP备14008679号