STM32启动过程浅析

写在正文之前

也许看到我这篇文章的各位同学已经能够熟练地使用STM32完成各种任务,但是各位有了解过STM32启动过程吗?在这篇文章中我会带着大家了解STM32的启动过程

正文部分

参考资料

STM32 MAP文件浅析.pdf

STM32 启动文件浅析.pdf

Cortex-M3权威指南(中文).pdf

一、MAP文件浅析

MDK编译过程产生的文件有11种

每一个.c和.s都会产生一个.o文件,所以该文件的数量通常是最多的

.o生成.axf,.axf生成.hex

.hex文件

介绍

.hex文件(十六进制文件)是编译和链接过程的输出之一,主要用于嵌入式系统的程序烧录

作用
程序存储

.hex文件包含了目标程序的机器码,适合于微控制器等嵌入式设备的存储与执行

编程和烧录

使用烧录工具(如ST-Link、J-Link等)将.hex文件上传到目标设备的闪存中,确保程序能够在设备上运行

兼容性

.hex文件格式广泛支持,许多编程器和开发环境都能识别和使用,方便在不同平台之间的转移和更新

调试与验证

开发者可以通过.hex文件进行程序调试,验证代码的正确性,确保最终产品的功能符合预期

重要性

总之,.hex文件是将编写的代码转换成微控制器可以理解和执行的关键文件

Map文件

概念

MAP文件是MDK编译代码后,产生的集程序、数据及IO空间的一种映射列表文件,简单来说就是包括了:各种.c文件、函数、符号等的地址、大小、引用关系等信息

组成
作用

MAP文件的作用在于:分析.c文件占用FLASH和RAM的大小,方便优化代码

打开方式

在工程名双击,即可打开.MAP文件

二、STM32启动过程

2.1 STM32启动模式(F1/F4/F7/H7)

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

1、从地址0x0000 0000 处取出堆栈指针MSP的初始值,该值就是栈顶地址

2、从地址0x0000 0000 处去除程序计数器指针PC的初始值,该值是复位向量

2.1.1 F1启动模式

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

无法下载程序解决方法:B0接3.3V,按复位,然后再下载

2.1.2 F4启动模式

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

如果要使用FSMC重映射到外部的SRAM:可以通过配置SYSCFG_MEMRMP寄存器

无法下载程序解决办法:B0接3.3V,按复位,然后再下载

2.1.3 F7启动模式

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

2.1.4 H7启动模式

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

2.2 STM32启动过程

启动文件介绍

关于中断函数

weak弱定义表示在其他地方可以对其重新进行定义

结语

今天的这些东西入门的门槛比较高,对大部分人都不是很友好,但是我认为正是这些门槛高的东西,才让我们有了其他人没有的竞争力,一起加油吧各位

相关推荐
CPETW26 分钟前
同旺科技 USB TO SPI / I2C适配器(专业版)--EEPROM读写——C
c语言·开发语言·科技·stm32·单片机·嵌入式硬件·电子
keke101 小时前
PLC入门【6】计时器、计数器、存储器
嵌入式硬件
小智学长 | 嵌入式4 小时前
Arduino入门教程:4-1、代码基础-进阶
嵌入式硬件·物联网·arduino
国科安芯5 小时前
【AS32系列MCU调试教程】调试工具:Eclipse调试工具栏与窗口的深入分析
单片机·嵌入式硬件·eclipse
nuannuan2311a5 小时前
9N65-ASEMI照明系统应用专用9N65
单片机·嵌入式硬件
woshihonghonga5 小时前
高级定时器TIM1、TIM8
stm32·单片机·嵌入式硬件
腾飞的信仰5 小时前
举例说明单片机,主循环和中断资源访问冲突的案例
单片机·嵌入式硬件·mongodb
腾飞的信仰16 小时前
单片机,主循环和中断资源访问冲突的案例
单片机·嵌入式硬件
花落已飘16 小时前
STM32 Bootloader:使用文件头加载并启动应用程序
stm32·bootloader
猿来不是梦18 小时前
RT_Thread内核源码分析(五)——内存管理@小堆内存管理算法
stm32·单片机·算法·系统架构·rt_thread操作系统