STM32的启动流程到底是怎样的?

本文深入探讨STM32启动文件中的关键步骤,包括汇编基础知识、启动文件配置、堆栈分配、向量表作用及代码执行流程。适合底层开发人员了解STM32启动机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于STM32启动文件中启动流程的问题,今天就说下相关内容吧。

 

1.写在前面

首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识

 

汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。

 

如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码

 

 

2.说明

STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。

 

虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。

 

我们拿基于MDK-ARM的启动文件来举例,说一下要点内容

 

3.分配堆栈

在基于MDK的启动文件开始,有一段汇编代码是分配堆栈大小的。

 

这里重点知道堆栈数值大小就行。还有一段AREA(区域),表示分配一段堆栈数据段。

 

数值大小可以自己修改,也可以使用STM32CubeMX数值大小配置:

 

在IAR中,是通过工程配置堆栈大小:

 

 

4.向量表

相信大家都知道向量表,先看汇编代码:

 

这个向量表就是对应手册中的那些内容:

 

我们需要知道这个地方中的复位,程序上电之后,是跳到Reset_Handler这个位置。

 

 

5.执行代码

上面知道代码是从Reset_Handler开始执行,我们看Reset_Handler汇编代码:

 

在启动的时候,执行了SystemInit这个函数。

 

之前标准外设库在SystemInit这个函数初始化了系统时钟,后面HAL库单独把那部分代码提出来了。

 

执行完SystemInit函数,就跳转到我们的main函数执行了。

 

6.最后

作为普通人,知道大致启动流程即可。里面知识还有很多,有时间可以深究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值