STM32复位启动的过程

首先要了解,stm32的存储映射解构,解构如图:(该图来自官方手册)

在存储空间的开头是Alias区域,该部分就是用于存储的重映射。

重映射的选择是由Boot引脚来抉择的。

在程序复位启动时,程序一定先从0x00000000开始执行。这时alias区又映射其他的区域(例如flash)。这时候alias区就好像一个窗口,而被映射的存储区就是透过窗口看到的风景。

于是mcu指针先看到的是映射的0x08000000的flash区的中断向量表。即是

1.初始化msp指针。

2.执行reset_hanlder函数

在s启示文件中,我们能看到

复制代码
; 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中断函数的运行逻辑,可以看到。他首先执行了SystemInit函数,后续再执行了__main函数。

而当执行的函数所在的代码地址均在flash上,就好像alias区只是个引入人,当指针运行到相应区域后,这个引入人便失去了作用。

相关推荐
Ww.xh14 分钟前
STM32+ESP8266智能农业系统开发指南
stm32·单片机·嵌入式硬件
charlie11451419115 分钟前
嵌入式Linux驱动开发(3)——内核模块机制 - Linux 的插件系统
linux·运维·开发语言·驱动开发·嵌入式硬件·学习
yong999018 分钟前
在 STC15W201S 上实现 MODBUS RTU 协议
stm32·单片机·嵌入式硬件
xzl0440 分钟前
瑞萨 FSP 和 STM32 HAL 库的启动流程核心差异
stm32·单片机·嵌入式硬件·rt-thread
芯希望1 小时前
XBLW芯伯乐XBL1507B系列3A 150kHz 40V DC-DC转换器,高效率宽输入电源解决方案
单片机·嵌入式硬件·dc-dc·工业控制·国产替代·电源管理·xblw芯伯乐
不做无法实现的梦~1 小时前
STM32 蜗轮蜗杆电机控制系统设计
stm32·单片机·嵌入式硬件
foundbug9991 小时前
STM32 上实现 Modbus-RTU
stm32·单片机·嵌入式硬件
飞睿科技2 小时前
飞睿智能5.8G毫米波雷达智能猫砂盆检测方案
嵌入式硬件·物联网·雷达·智能猫砂盆·宠物用品
小叮当⇔2 小时前
TI电源管理芯片——TPS65251RHAR手册
单片机·嵌入式硬件
leo__5202 小时前
51单片机实现读写U盘
嵌入式硬件·mongodb·51单片机