STM32启动流程及相关概念

STM32启动流程

  1. 复位/上电
  2. 根据 BOOT0/BOOT1 确定程序从哪个存储位置执行
  3. 初始化 SP 及 PC 指针
    将 0X08000000 位置的栈顶地址存放在 SP 指针中
    将 0x08000004 位置存放的向量地址装入 PC 程序计数器
  4. 初始化系统时钟
  5. 初始化用户堆栈
  6. 进入main函数

常见文件

startup_stm32f102xb.s

启动文件,用于初始化硬件、设置堆栈和中断向量表,然后跳转到 C/C++ 的主程序入口点( main 函数)。

stm32f1xx_it.c

中断服务例程文件,它包含了处理各种中断的 C 语言函数实现,例如定时器中断、外部中断等

system_stm32f1xx.c

定义了系统初始化函数 SystemInit 和系统时钟更新函数SystemCoreClockUpdate

sm32f1xx_hal.c

HAL库初始化、系统滴答、HAL库延时等相关函数

stm32f1xx_hal_cortex.c

内核通用函数定义和声明,如NVIC、MPU、系统软复位、Systick等,其实主要是对core_cm3.h 文件的相关函数再次封装。

stm32f1xx.h

是所有F1系列的顶层头文件,通过条件编译来包含某个芯片的头文件,定义通用的枚举类型,定义通用的宏 定义stm32f103xb.h
包含:中断编号定义、外设寄存器结构体类型定义、寄存器映射、寄存器位定义、外设判定

stm32f1xx_hal_conf.h

HAL库的用户配置文件,用于裁剪HAL库、配置晶振参数等

stm32hxx_hal_def.h

包含HAL库通用的枚举类型数据和宏定义

stm32f1xx_hal_ppp.c

某任意外设驱动源码,PPP表示任意外设

stm32f1xx_hal_ppp_ex.c

主要是存放外设的扩展(特殊)功能的驱动源码,PPP表示任意外设

map****文件

map 文件是 MDK 编译代码后,产生的集程序、数据及IO空间的一种映射列表文件。简单来说就是包括了:
各种 .c 文件、函数、符号等的地址、大小、引用关系等信息。
**作用:**用于分析各 .c 文件占用 FLASH 和 RAM 的大小,方便优化代码。
map 文件大致可以分为五大部分,每部分的作用如下:

  1. 模块、段(入口)交叉引用(Section Cross References:描述了各文件之间函数的调用关系,有
    助于理解各个源文件如何相互关联。
  2. 移除未使用的模块(Removing Unused input sections from the image:描述了工程中未用到
    而被删除的冗余程序段,有助于优化代码,降低内存负担。
  3. 映射符号表(Image Symbol Table:描述了各符号(程序段、数据)在存储器中的地址、类型、大
    小等信息,对于理解程序的内存布局以及定位特定代码或数据段非常有用。
  4. 内存(映射)分布(Memory Map of the image:描述了各程序段(函数)在存储器中的地址及占
    用大小,有助于分析程序的内存占用情况。5. 映射组件大小(Image component sizes:给出了整个映像代码(.o)占用空间的汇总信息,包括
    代码、只读数据、已初始化读写数据、未初始化读写数据等的大小,有助于了解程序的总体内存使用情
    况。
    MAP文件的这五部分提供了对程序内存布局、函数调用关系、以及各模块占用情况的全面分析,是STM32开发中重要的优化和调试工具。

时钟

时钟是由电路产生的具有周期性的脉冲信号,相当于单片机的心脏,给单片机提供一个统一的信号。
要想使用单片机的外设必须开启相应的时钟。
HSE = 高速外部时钟
HSI = 高速内部时钟
LSI = 低速内部时钟
LSE = 低速外部时钟

相关推荐
项目題供诗12 小时前
51单片机入门(八)
单片机·嵌入式硬件·51单片机
羽获飞12 小时前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
飞睿科技13 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
来自晴朗的明天14 小时前
13、NMOS 电源防反接电路
单片机·嵌入式硬件·硬件工程
17(无规则自律)14 小时前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术14 小时前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
wotaifuzao15 小时前
STM32 + FreeRTOS 的订阅通知组件架构
stm32·嵌入式硬件·架构·freertos·事件驱动·嵌入式架构
小龙报16 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
Lester_11011 天前
STM32 高级定时器PWM互补输出模式--如果没有死区,突然关闭PWM有产生瞬间导通的可能吗
stm32·单片机·嵌入式硬件·嵌入式软件
小李独爱秋1 天前
“bootmgr is compressed”错误:根源、笔记本与台式机差异化解决方案深度指南
运维·stm32·单片机·嵌入式硬件·文件系统·电脑故障