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

新手学几天STM32,为啥一脸茫然

[复制链接]
flyingstar 发布时间:2025-9-17 16:24
如果在之前没接触过任何单片机,那可能是以下两个原因:
  • MCU的基础知识理解的缺失
  • 不清楚STM32单片机的具体工作原理
    - k+ O5 m& D% D0 Y9 X$ K8 r
    按照整个学习阶段先后顺序的说明,下文从三方面来说明问题。
) E8 p8 Z2 c6 k9 P7 P' ?4 r$ X
1 单片机基础知识点
& \  B! i" Q7 j* P
    对于MCU来说,在没有接触具体的功能,仅专用名词就一堆,交叉编译,内核,加法器/除法器、协处理器、算法加速器、指令集、浮点运算、流水线、哈佛结构、寄存器(通用和外设)、时钟、中断和异常、FLASH、RAM、Cache(缓存)、SDRAM(刷新时间)、USART(波特率,停止位,奇偶检验)、CAN,SPI(片选)和I2C等。8 _# x# H. N* Q5 C' k2 k$ L
5 q* f& l1 \+ ~; M2 v' y1 y

4 h8 n3 \8 M3 N/ @" ~    对STM32 MCU理论知识的学习和理解很重要,以下是入门一款单片机的学习路线仅供参考。1 `: j, M: Y% F! k! M2 O7 p

' O& \' q; i! d! Y0 `/ F

5 [: U/ y- @" t% @# I. @- p 微信图片_2025-09-17_162217_250.png
# \* |) @! F( `: h; ]7 Z   $ r+ Y% q" J7 g3 w: e! f: T

0 L* G# G, K: R1 j8 F7 P2 I% Y! j. F4 a. M" D
    这里面有的属于基础知识,有的属于进阶需要了解的知识点,这些名词的理解是作为入门者的第一个门槛,如果对一些专用名词不了解,那么组合起来的语句就更加晦涩难懂。2 {( Q. d/ g; I* `# R
/ x2 p% `& x$ F" w  w
4 ^  `, Z  T) U4 D- I5 |& T
7 }% m7 x8 f  z# v
    这里说我的学习方法:遇到听不懂的专业术语,去网络上查找理解,并找个本子或电脑通过文档的形式记录下,一段时间回顾一下,好记性不如烂笔头。
$ P8 }* I6 H- ^! ?( `2 Q

: l/ w/ N1 c7 {6 x; b
: N* p( Y4 M2 P
; k" Q, B( l3 z. }
    这里推荐<Cortex-M3权威指南>,对于单片机学习中需要了解的内核知识都有说明。
2 h8 D" H3 A: ?; O& ^" f. S7 y# q& J. \# m6 w1 H
& J: b, J; [3 w# L9 R& C. _
2 STM32工作流程
1 z" t4 o5 ^% I- T
: a7 C, w. y* T( B# C! r% i
9 x; I: x7 s" U' S
    专业术语并不会多难,记住基本不会忘,就算忘了回顾下也简单,在迈过这个坎后,下一步就是理解芯片执行流程和我们要做什么才能让芯片工作起来。* K6 d' g9 f$ s+ m  c$ {
) f) o" W  s6 Q! z; x

& \6 F+ y  A# a' i3 }$ p; s
  • 在上电后,芯片复位启动。
    % i3 Q# ]9 B/ I9 d
  • MCU从FLASH通过指令/数据总线分别读取指令和数据,配合解析执行,其中在通过RAM和通用寄存器(也就是R0~R12的内部寄存器)处理可变数据。! d9 {! S" f, W$ D4 p
  • 根据执行的指令,配置和操作外设的的寄存器,从而驱动对应外设实现具体的功能。( J2 c# D8 P+ Z: \% S
  • 配合上层组合逻辑,结合外设功能,执行具体应用的全部需求。9 w$ \5 l- O" R

    6 ?" Z9 ~! j5 b
    上述就是芯片工作的流程,而作为单片机开发者,实现的代码就是放在FLASH中的程序,由官方提供的SDK包和用户裁剪实现定义的外设驱动组成,按照上述流程就包含:
3 I9 k1 j7 |: K1 E/ x( A$ b/ }
  • 芯片的启动过程中对堆栈的初始化
    ' Q4 o9 c2 V2 k5 c
  • 系统相关外设的处理(如时钟) => 这部分由厂商提供,我们把文件放入项目即可,以STM32为例就是启动文件startup_xxx.s和系统初始化的SystemInit函数: b* M. E- N# @  ?* r4 O

    / Z- N" \* J. d+ U- G- q4 y
  • 配置应用需要的外设模块,如果你看网上的教学视频,都是从这一步直接开始的,特别是STM32基于STM32CubeMx的实现,会告诉你这么写是满足要求的
    4 ~1 c7 |2 A: X- \0 V( _
    6 H7 ]6 x3 q" z9 h0 r
    ( V, E6 J' e; Q: ]5 N8 f3 T

$ n6 U5 R/ v+ w$ T; M
& q. n9 E: ?' L% C' t
    如果你不是愿意深究的人倒也无所谓,当你深究这东西的时候,就会发现没有人告诉为什么要这么写,迷惑自然就来了,其实这部分就是嵌入式所谓的经验成分。" F/ [9 H. M+ j4 W6 r; U& |

. _7 R% B: ~/ E2 h6 k) W  W# \$ v/ d9 M
2 g; H4 m8 ?: K0 R; j* G
    如大部分外设模块都要进行时钟使能,GPIO就要配置引脚的上拉/下拉,推挽/开漏,USART配置模式,波特率,奇偶校验,停止位,数据位,还要考虑对应GPIO的端口复用,I2C就要考虑主从模式,根据需要的传输速率确定模块时钟,SDRAM除了考虑引脚复用,时序,还要计算刷新时间来保证数据的稳定,这些知识理论上都是长期在工作中积累出来的。: y+ U# b# W8 V; L

' q! k9 _7 b( Q; ^3 F
2 j- I' K0 Y( x- q, A7 A! Y* v. z

# B- {# t, B4 g% h6 w0 v    在项目需求确定后,根据芯片和器件选型,就能够确定硬件PCB的绘图和布置,功能需求也能确定,如访问外部EPPROM,那么I2C就确定为主模式,并根据EPPROM的读写时序和芯片的性能,考虑到效率和稳定的平衡,就可以确定I2C的速率,考虑布局和其它需求,I2C对应的复用引脚也能确定。
- \7 {! M6 i! d5 b

3 T0 s1 F# v  C1 T% E$ w2 q, ?( E. l; \3 S+ }0 E) L  G

$ z8 C3 L! {0 j& }3 Q) X) g7 f1 {    事实上,对于真实项目,都是从需求=>项目计划书=>软硬件框架=>软件驱动* V( V1 x0 G) l0 g+ p+ C& x: q
1 ]5 W5 h9 G( r( h. }+ h4 i

$ a+ q/ A1 I* ^& X8 E2 T6 {3 上层应用逻辑实现$ G$ d9 T2 I2 c) l% k1 c8 O

3 J. X/ K7 a0 o- I/ ?7 N7 H

/ G8 U: U, g- O1 q& h  |+ w+ h    配合外设的应用逻辑实现其实才是项目中最复杂的部分,包含中断前后台系统的交互,可能存在RTOS应用和协议移植,GUI的管理操作,和其它模块如wifi模块,蓝牙模块的交互,不过这部分属于进阶内容,当你对外设模块有一定认知后,这部分应该也会有自己的学习方法,这里我就不在赘述。
8 s$ n7 \8 Z( R: v5 \" x! g8 [
4 O- |$ |& `6 j' e

; ]8 K; J; {/ i: ^( j0 J- |. r
' w& g" C6 I* G( B* V
    这只是我对单片机问题关于自己理解的总结,单片机虽然并不需要创新研发未知的技术,但却涉及从芯片底层到软件接口的全部实现,包含对现代计算机技术中向微处理器方向的全部精华技术,也是需要不断学习才能不被时代抛弃。& o& m* K8 D# D( t! F8 p: O

9 ]5 ?- B6 z* d/ g/ b$ t

4 F& C: c8 e) U  l) D2 y1 Z1 f    先从STM32理论知识入手,拿实例代码在实验板验证,来加深对外设、协议等理论知识的理解。过程可能很慢,但是基础知识肯定会打的很扎实,相信对后面开发会有很大的帮助。/ k8 j; {1 a  E$ g1 N
赞 收藏 评论0 发布时间:2025-9-17 16:24

举报

0个回答

所属标签

相似技术帖

官网相关资源

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