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弱定义表示在其他地方可以对其重新进行定义

结语

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

相关推荐
cjy_Somnr3 小时前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
Lay_鑫辰4 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤6 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟8 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞8 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲8 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up9 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技18 小时前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志19 小时前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣20 小时前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法