【STM32】启动流程分析补充

STM32上电后,根据BOOT引脚状态决定启动模式,如从主Flash、系统存储器或SRAM启动。启动时,代码从0x00000000地址重映射后的实际位置开始执行。首先执行中断向量表,初始化SP和PC,接着配置系统时钟,调用SystemInit和__main函数,最后进入main函数。这一过程涉及固件加载、堆栈初始化和系统配置。

在面试的时候,我遇到一个提问,单片机上电之后都做了些什么?

那么STM32上电之后都做了些啥呐?
可以配合起来看: 单片机启动文件分析

三种启动模式

简而言之就是根据启动模式决定0x0000 0000重映射到下图哪个地址,那么当单片机开始执行的时候就从哪里开始执行(还是从0x0000 0000开始,只不过这个时候的0x0000 0000代表的实际位置是以下几个之一了。)
在这里插入图片描述
三种启动模式:
下好程序后,根据重启芯片时,SYSCLK的第4个上升沿,BOOT引脚被锁存的值,确定启动模式。

1.从主闪存存储器启动,将主Flash地址0x08000000重映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。主闪存存储器是STM32内置的Flash,作为芯片内置的Flash,是正常的工作模式。一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序,这是最常用的启动方式

2.从系统存储器启动。首先控制BOOT0、BOOT1管脚,复位后,STM32与上述两种方式类似,从系统存储器地址0x1FFF F000开始执行代码。系统存储器是芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。启动的程序功能由厂家设置。系统存储器存储的其实就是STM32自带的bootloader代码。也是ISP烧录,串口下载程序的启动方式。

3.从内置SRAM启动,将SRAM地址0

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值