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

相关推荐
不悔哥2 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20162 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子2 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡2 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5552 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡2 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9662 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛2 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅2 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员2 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程