STM32启动过程

STM32启动模式(自举模式)

M3/3/7等内核,复位后做的第一件事:

  1. 从地址0x0000 0000处取出栈指针MSP的初始值,该值就是栈顶地址。
  2. 从地址0x0000 0004处取出程序计数器指针PC的初始值,该值是复位向量。

芯片厂商会把0x00000000和0x00000004地址映射到其它的地址。

在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。

STM32启动过程(内部FLASH启动)

  1. 初始化MSP:从0x0800 0000获取
  2. 初始化PC:从0x0800 0004获取
  3. 设置堆栈大小:Heap_Size(堆)、Stack_Size(栈)
  4. 初始化中断向量表:__Vectors定义
  5. 调用初始化函数:可选的,如调用:SystemInit函数
  6. 调用__main:标准C库函数,执行一系列设置,最终调用main函数

Reset_Handler函数介绍

c 复制代码
Reset_Handler PROC
	EXPORT Reset_Handler [WEAK]
	IMPORT __main
	IMPORT SystemInit
	LDR R0,=SystemInit
	BLX R0
	LDR R0,=__main
	BX R0
	ENDP

EXPORT:标明全局属性,可被外部调用。

IMPORT:申明来自外部文件,类extern

PROC:表示子程序

ENDP:表示子程序结束

WAEK:弱定义

堆栈简介

  • 栈:编译器自动分配和释放,存放函数参数、局部变量等。
  • 堆:程序员分配和释放,如malloc、calloc、realloc等。

函数局部变量较多,嵌套关系复杂时,需要加大栈大小!

相关推荐
芯岭技术郦1 小时前
批量不到1元,芯岭技术集成 2.4G 射频32 位 MCU 与 USB2.0的超低功耗 SoC XL2417U
单片机·嵌入式硬件·射频工程
少年、潜行4 小时前
【开源】基于STM32的无线姿态检测仪设计
stm32·嵌入式硬件·开源·姿态检测仪
三品吉他手会点灯6 小时前
STM32F103 学习笔记-22-DMA(第1节)-DMA功能框图讲解和DMA初始化结构体讲解
笔记·stm32·单片机·嵌入式硬件·学习
陌上花开缓缓归以7 小时前
定时器和延时函数选型
单片机
华普微HOPERF8 小时前
电视冰箱洗衣机、空调风扇热水器,Matter协议如何塑造全屋智能?
嵌入式硬件·物联网·智能家居·matter协议·全屋智能
ThornArmor8 小时前
【控制篇】斩断无休止空转:4-bit 指令集里的跳转律令与时序状态机
c语言·汇编·c++·单片机·嵌入式硬件
篮子里的玫瑰8 小时前
STM32/MCU【IAP在线升级】全流程深度解析与实战指南
stm32·单片机·嵌入式硬件
深圳市青牛科技实业有限公司9 小时前
D3815C30V/0.8A高调光比 LED恒流驱动器介绍
单片机·嵌入式硬件·人机交互·摄像机
Plankton_Li9 小时前
嵌入式国密加密:STM32L4 + MIRACL 库实现 SM2 加解密
stm32·单片机·嵌入式软件
高速上的乌龟10 小时前
Lattice LFCPNX-100 HSB+Fpga开发详解:2.2 Marvell MV-Q3244 Phy的Podl电路详解
单片机·嵌入式硬件·fpga开发·软件工程