写在正文之前
也许看到我这篇文章的各位同学已经能够熟练地使用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弱定义表示在其他地方可以对其重新进行定义
结语
今天的这些东西入门的门槛比较高,对大部分人都不是很友好,但是我认为正是这些门槛高的东西,才让我们有了其他人没有的竞争力,一起加油吧各位