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区只是个引入人,当指针运行到相应区域后,这个引入人便失去了作用。

相关推荐
代码游侠17 小时前
学习笔记——GPIO按键与中断系统
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习·重构
__万波__18 小时前
STM32L475按键中断实验
stm32·单片机·嵌入式硬件
破晓单片机18 小时前
STM32单片机分享:智能恒温箱系统
stm32·单片机·嵌入式硬件·智能家居
小痞同学18 小时前
【铁头山羊STM32】HAL库 6.中断部分
stm32·单片机·嵌入式硬件
你爱写程序吗(新H)18 小时前
基于单片机的洗衣机控制系统设计 单片机洗衣机控制(设计+文档)
c语言·汇编·单片机·嵌入式硬件·matlab
淘晶驰AK18 小时前
新手学单片机,主要是玩,学什么好?
单片机·嵌入式硬件
恶魔泡泡糖18 小时前
51单片机I-O扩展1
c语言·嵌入式硬件·51单片机
TEC_INO18 小时前
stm32_16:列表
单片机·嵌入式硬件
一路往蓝-Anbo18 小时前
【第48期】:嵌入式工程师的自我修养与进阶之路
开发语言·网络·stm32·单片机·嵌入式硬件
破晓单片机18 小时前
STM32单片机分享:智能浇花系统
stm32·单片机·嵌入式硬件