1. STM32启动过程概述
STM32 微控制器的启动过程是指从上电或复位开始,到系统开始执行用户程序的整个过程。这个过程包括了硬件初始化、引导加载程序 (Bootloader) 执行、系统时钟配置、外设初始化等步骤。
2. STM32 启动的基本流程
-
上电或复位
- STM32 芯片的启动过程是从芯片上电或复位信号触发开始的。此时,处理器会从预设的复位向量地址开始执行代码。STM32 通常会有一个硬件复位管理模块(RCC、SysTick、NVIC 等)来处理复位。
-
复位向量和启动代码
- STM32 在上电或复位时,会从 向量表(位于内存的地址
0x00000000
或0x08000000
)开始执行指令。这个向量表包含了中断服务程序(ISR)和复位处理程序(Reset_Handler
)。 - 复位向量指向的是
startup.s
汇编文件中的_start
函数,它负责执行一些最基础的初始化操作。
- STM32 在上电或复位时,会从 向量表(位于内存的地址
-
设置堆栈指针
- 复位后,STM32 会初始化堆栈指针(
SP
),使其指向栈顶(通常位于 SRAM 的末尾),从而为后续的中断和函数调用做好准备。
- 复位后,STM32 会初始化堆栈指针(
-
BSS 和数据段初始化
- 在启动过程中,
startup.s
文件会进行静态变量的初始化。所有未初始化的全局变量会被清零(BSS 段),而已初始化的全局变量会从 Flash 区域拷贝到 SRAM 中(Data
- 在启动过程中,