你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2020-12-16 10:27
STM32的启动流程到底是怎样的?
% x6 G% m" v( z
* i0 {: D. V. t
后台陆陆续续有人在问关于STM32启动文件中启动流程的问题,今天就说下相关内容吧。
' W! |- Z- [! n) f: H$ O
1.写在前面
首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识。
7 h+ A$ ^. K; }9 E- t
汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。
, `2 T! Y) H4 l8 |# Y; A5 m3 a" A
如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码。
& H% D" A: H& D" F
* a8 a2 s7 k4 C7 c
2.说明
STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。
! Q  }* ~2 x/ A+ Y  M1 T9 s
虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。

% @- ]' S! D! r: Q% R
我们拿基于MDK-ARM的启动文件来举例,说一下要点内容。
2 @7 W4 N/ \& ^6 p, l, Y( b- t
3 |' d8 Z0 h6 D0 Y- \
3.分配堆栈
在基于MDK的启动文件开始,有一段汇编代码是分配堆栈大小的。
, J( o( v0 @, q8 v& G5 n2 q
4.1.png

$ i( `% M4 W" m
这里重点知道堆栈数值大小就行。还有一段AREA(区域),表示分配一段堆栈数据段。

* D8 O8 u+ y) V' S: A
数值大小可以自己修改,也可以使用STM32CubeMX数值大小配置:
0 ]1 b: V: _! V6 ~. \/ r: J6 Z- a
4.2.png
" u# O% o% Y4 n/ Z
在IAR中,是通过工程配置堆栈大小:
( h' q  [" a. }& x
4.3.png

3 X& z7 `1 {7 [6 f( x* e
4.向量表
相信大家都知道向量表,先看汇编代码:
, l/ v) f# \& I1 R3 Z
4.4.png

  k* Z9 c% @- G2 N
这个向量表就是对应手册中的那些内容:
" [7 X- D0 d& d$ B* U
4.5.png

8 i' f0 i3 k9 l$ k( u6 B
我们需要知道这个地方中的复位,程序上电之后,是跳到Reset_Handler这个位置。
3 f- w7 s: J( Z* L! m  N
5.执行代码
上面知道代码是从Reset_Handler开始执行,我们看Reset_Handler汇编代码:
6 |1 O  n! i* p4 J6 n
4.6.png
6 H) u, p) E5 t7 h. f& O4 `  z  d  @
在启动的时候,执行了SystemInit这个函数。
. M7 B, I3 ~& f5 s0 [$ r
之前标准外设库在SystemInit这个函数初始化了系统时钟,后面HAL库单独把那部分代码提出来了。

- v5 p) O; ~# U! R! u, ?
执行完SystemInit函数,就跳转到我们的main函数执行了。

) E+ e9 f+ y7 `; `. Q3 P9 |/ e5 |
6.最后
作为普通人,知道大致启动流程即可。里面知识还有很多,有时间可以深究。
% K7 I0 D, _' @5 _
你要问我相关细节问题,我可能也不知道。我读书时考计算机三级就是汇编,虽然上机(汇编)编程满分,但很多细节知识,我至今也不知道。

) M: \# L# v$ h
对还在读书的同学说一点:读书时的有些(汇编)理论知识,不是完全没用,是还没用上。
* ?. K* d# d4 R% a* v) r% d
-END-
# H4 o- _( z: H/ h% ?
文章出处:  strongerHuang

; K- a4 d( Q( }( G# e3 L% G1 k, E+ R7 |( w9 S8 W. U2 j" ]
赞 收藏 评论0 发布时间:2020-12-16 10:27

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版