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

相关推荐
NULL指向我20 分钟前
STM32F407VET6学习笔记14:Bootloader程序笔记
笔记·stm32·学习
别了,李亚普诺夫31 分钟前
定时器与输出比较-学习笔记
笔记·stm32·学习
mastercoder--31 分钟前
速通51单片机————按键控制LED流水灯与定时器闹钟
单片机·嵌入式硬件·51单片机
西城微科方案开发35 分钟前
智能打气泵方案开发设计
单片机·嵌入式硬件·方案公司推荐
硅农深芯1 小时前
ARM Cortex-M系列的内核型号有什么区别,该怎么选择
arm开发·单片机·芯片
Y unes2 小时前
《uboot基础命令记录①》
linux·驱动开发·嵌入式硬件·mcu·ubuntu·uboot
Dillon Dong3 小时前
从C到Simulink: 使用 `simulation_stubs`(仿真存根)处理MBD中的硬件依赖
c语言·stm32·matlab
jencepan3 小时前
【3C拓展坞】40V20A同步四开关升降压控制器 太矽TX9575
单片机·嵌入式硬件
墨辰JC5 小时前
STM32架构基于调度器的非阻塞按键状态机设计
stm32·microsoft·架构·状态机·调度器
qq_411262426 小时前
用MCU一个GPIO自锁PMOS就能实现按键开关机
单片机·嵌入式硬件