查看原文
其他

STM32启动做的几件事

strongerHuang 嵌入式专栏 2022-09-10

关注+星标公众,不错过精彩内容

作者 | strongerHuang

微信公众号 | 嵌入式专栏


很多初学的小伙伴不知道STM32在启动的过程做了什么事情,今天就来分享一下相关的内容。


嵌入式专栏

1

基础

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


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

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

嵌入式专栏

2

说明

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


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

我们拿基于Keil MDK的启动文件(.s)来举例,说一下要点内容

嵌入式专栏

3

分配堆栈

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


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

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

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

嵌入式专栏

4

向量表

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


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

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

嵌入式专栏

5

执行代码

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


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

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

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

嵌入式专栏

6

最后

作为普通开发者,只需要知道大致启动流程即可,不必要深究其中原理。你要问我很多细节问题,我可能也不知道。


当然,有时间和精力的前提下,里面有很多内容还是值得学习和理解


------------ END ------------


后台回复『STM32』『单片机』阅读更多相关文章。


欢迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:


点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存