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

结语

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

相关推荐
正在努力的小立2 小时前
STM32 HAL 点灯
stm32·单片机·嵌入式硬件
TeYiToKu3 小时前
笔记整理—linux驱动开发部分(1)驱动梗概
linux·c语言·arm开发·驱动开发·嵌入式硬件
Whappy0014 小时前
3. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验1:PWM驱动LED呼吸灯)
stm32·嵌入式硬件·机器人
想拿 0day 的脚步小子4 小时前
6.stm32 OLED显示屏
stm32
Java Fans6 小时前
嵌入式软件在电子烟开发中的应用
嵌入式硬件
环能jvav大师8 小时前
使用Ubuntu系统+VS Code开发STC51单片机
linux·c语言·开发语言·单片机·嵌入式硬件·ubuntu
q4725994519 小时前
UART通过DMA接收和发送,使用环形缓冲区,状态机的使用
stm32·单片机·嵌入式硬件
你也喜欢吃香菜嘛9 小时前
STM32主从定时器输出个数、频率可调的脉冲
stm32·单片机·嵌入式硬件
亿道电子10 小时前
【ARM】MDK-Functions界面设置
arm开发·stm32·单片机
Gui林13 小时前
【GL08】STM32--ADC/DAC
stm32·单片机·嵌入式硬件