在面试的时候,我遇到一个提问,单片机上电之后都做了些什么?
那么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

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

被折叠的 条评论
为什么被折叠?



