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

到底是先学STM8,还是学STM32呢?

[复制链接]
gaosmile 发布时间:2020-6-10 18:06
01
写在前面4 Z3 m7 z' O$ Q& `
7 W/ F+ A- F7 Z! }) g0 r( D
想要明白这个问题,其实就需要明白STM8和STM32之间有些什么差异,包括MCU基本信息、开发难度、以及应用场景等。* q8 h6 j: V& ]1 [' o
站在客观的角度来说,STM8比STM32学起来更容易,C语言功底还不错的朋友,直接上STM32也不是问题。
- I$ k# d& `3 W8 p: O/ }从大的方向来说,当你对一种MCU掌握的比较透彻,再学其他型号、其他厂商的MCU,相对来说,上手都要容易的多。) y; r0 `0 ^- C9 ]5 }
针对本文问题,我下面讲述一下相关知识。6 X: m3 \# |: |' l7 Y# L- Z8 Q
02
STM8和STM32内核差异
2 q8 @8 n4 P" H! b0 b3 e+ ~; m
STM8™ CPU 是一种专有架构,它保持了以前的 ST7 内核的传统,同时在 8 位 CPU 效率和代码密度方面实现了突破。
( L! D5 |0 T+ p% ZSTM32 围绕行业标准 ARM® Cortex™-M 32 位内核构建,并受益于与 ARM 处理器有关的开发工具和软件解决方案的完整生态产业环境。: G# q* ~2 k0 a
尽管它们被认为是两种完全不同的处理器,但它们在架构方面实际有许多相似之处。  t. J$ [) `7 L
下面对比STM8S 和 STM32F1 (Cortex-M3)这两种内核差异:# `- {8 O5 }$ F) |3 I8 A3 x
微信图片_20200610180123.jpg # _4 @- o: G% R  w2 {
两种内核均基于哈佛架构,它们采用 3 级流水线执行,可将执行时间降至最低,对于 STM8S,时钟速度高达 24 MHz,对于 STM32F1系列,时钟速度高达 72 MHz。% ]6 i) l4 m- Y* B6 Q+ V7 s
在代码密度方面,它们均有优异的表现,这归功于 STM8S 系列的 8 位 CISC 指令集以及 STM32F1系列的 Cortex 内核引入的 16 位 Thumb-2 模式。
" W+ s+ r" x3 R/ Z3 V) D, q  ^

03

片上外设差异
  g! X& n3 d( d1 h/ @* J
ST 8位和 32位 MCU 产品线之间的片上外设具有一致性,大多数基本 MCU 外设均定义和构建为可从一个产品系列移植到另一个产品系列。1 U8 ^( p- f: e% e) L% `* d
这通过将 8 位外设简单但有效地修改为 32 位字来实现。这样做的好处是可节约成本和功耗,并且资源易于了解。( W; n$ {! T# ]/ X
如果需要更高性能,可在系统层面通过更宽的总线和 DMA 控制器对资源加以补充。在了解了外设的工作原理后,可以将外设应用到 STM8S 和 STM32 系列,从而加速两种器件之间的转换。+ ?+ w4 d1 X/ Q) a* C( l$ c+ o, g8 v( B
ARM 处理器和外设符合 AMBA 总线规范,采用 32 位数据总线,而 STM8S 器件使用更为简单但有效的 8 位总线标准。从功能角度看,它们仅在以下方面存在差异:
" O, h- G# j9 T* h, E
  • 寄存器大小: 8 位与 16 或 32 位
  • 直接取决于 CPU 运行速度的最大时钟频率
  • DMA,可通过简单数据管理减轻 CPU 的负荷并提高最大数据吞吐量
  • 一些产品特定功能,如 I/O 端口管理
    3 G' X) ]' g+ }. B0 N

" n4 Z. V( p6 ^. k9 d# R! W0 g  C4 n对比STM8S 和 STM32F1 的 SPI 框图:* v8 F( _& |* Q
微信图片_20200610180126.jpg
! }% u1 n4 d9 l+ U
- j) [7 X) I. d! m, \
SPI寄存器:3 P/ N1 m/ l; n6 n6 l  K9 g

9 a! K9 A% N" I* w$ a8 n$ t" t 微信图片_20200610180129.jpg ; k% ~: v& f; |1 [
从上面框图和寄存器可以看出:除了几个有区别的位和寄存器大小外,寄存器和位的名称以及在寄存器中的位置都是相似的。
* n1 L8 Z: x9 h. k4 o% Q1 g+ {  C
04
系统外设

$ C$ x8 m. b+ i( f2 j1 I5 m
当今的 MCU 是复杂的 SoC(片上系统),其中不仅包含许多外设,还包含一些高级系统特性,旨在缩减物料清单或增强系统的安全性和稳定性。
7 I' _8 Q- p' L* s! O% R0 Q1.复位
+ d3 w2 x* \0 j5 M0 f6 h2 o  _STM8S 和 STM32 基本具有相同的复位电路,仅有细微的差异:
6 v6 f& ~. C6 p0 e0 v! r4 Q0 c 微信图片_20200610180133.jpg
" M5 `! T  t% jNRST 引脚既是输入也是具有内置上拉电阻的开漏输出。为实现 EMS(电磁敏感度)鲁棒性,插入了一个滤波器以避免毛刺传播到数字电路中。双向复位有三个优点:
  • 对于多 MCU 系统,双向复位可确保在启动或热复位时所有子处理器均正确同步
  • 对于其它 IC,在系统层面还可以使用 MCU 内嵌的电压监控器(上电复位和欠压复位)
  • 当生成假内部复位时,在调试过程中会有很大帮助
    9 x" D3 B. r( q$ g

0 o" {& j/ v, u. Q: x5 K( O' j1 y/ E
2.时钟
- }& e+ [2 l5 P6 X& C2 }
STM8和STM32时钟都具有很强大的功能,特别是最近推出的STM32G0具有高精度内部时钟,可以省去外部晶振,减少硬件及PCB。# z* Y: P( K5 }& o' S/ r# L/ q
STM8不具备倍频功能,各方面相对要弱一点。STM32具有倍频、外设时钟分频等强大功能。同时,STM8和32都具有独立外设时钟使能功能,以降低功耗。8 ~; j0 F9 Y9 Y- x' Z( ]- y
看下STM32F1时钟树,就大概了解有哪些功能了:$ d+ S, N7 X# |
微信图片_20200610180137.jpg
- p; f% H' Q- _3 S+ r' u9 N0 E3.存储器& n, E7 r2 ^' q; [
两种产品线均基于非易失性存储器并具有一个选项字节加载器。此机制取代了用于 MCU 上电配置的传统熔丝位:用户可以在编程时选择多种选项,这些选项会随程序二进制映像一起写入。9 J# [) r, v) h9 C9 v2 x$ `( |
所有新型微控制器都具有以下几个特性:7 ?: p- G7 o  }- f) o# V. W  {1 Y
  • 暂停、停止或待机模式下的复位:可在 MCU 意外进入低功耗模式时避免发生死锁情况,适用于不能处理此类配置的应用
  • 硬件/软件看门狗,可以在复位之后立即通过硬件启动看门狗
  • 存储器读保护,用于防止对程序内容的窃取
  • 存储器写保护,用于保护存储器中包含关键代码的部分。通常,这适用于自举代码或IAP(应用内编程)驱动程序
    2 n$ l+ W  f$ G1 Y

+ s3 F& M0 l0 k  v' T这些选项可自动使能安全性和可靠性特性,这样即使在 CPU 获取第一个指令之前出现干扰或攻击,应用也可以恢复。
' `5 S& K& p1 HSTM8S 和 STM32 器件具有嵌入式自举加载器,通过它可以使用板上串行接口(例如 UART)重新烧写内部 Flash。随后可以将任何具有串行通讯接口的 PC 用作编程工具,来烧写或更新 Flash 以及数据 EEPROM 存储器的内容。 ST 提供了一个软件实用程序来执行自举加载器支持的所有操作。
) ?! ?) U' D) u. [当然,还有更多系统特性相关的内容,比如安全性、低功耗方面。这些设计都具有高度一致性。
( ^- b# U9 d: \
05
软件
) G5 l5 w, o' m9 R
STM8和STM32除了上面描述的一些内容具有高度一致性之外,其实,对应我们软件开发工程师来说,软件才是最为关心的一点。
) ?2 u! ?! ?7 d- D" J* d! f/ Y在STM8和STM32产品设计之初,工程师早就考虑过这个问题。因为二者系统、内核及外设都具有一致性,所以软件库也是设计具有一致性。9 P5 C: M  ^9 q! p
1.寄存器、库开发
: q- |# X8 F3 U- q; g3 V/ o这个我就不说了,从51过来的都知道,对于寄存器比较少的MCU来说,不是问题。对于STM8来说,其实我觉得还好,使用寄存器开发,就是需要更多时间了解寄存器。
0 Q) s7 M& Q" U  b7 C我其实不是很建议大家使用寄存器开发,现在STM8有标准外设库,库的API函数接口也容易理解,直接拿来省事,也能方便理解寄存器。7 u5 ?) S# w% i6 s0 g7 G& ~9 X. Y
那么对于STM32这种有大量寄存器的MCU,我同样也是不建议大家直接使用寄存器开发,部分功能可以针对库优化成寄存器。% F% C4 N- F" Z( x0 `; s
% |* }2 P  W! c" I: X2 R( x6 r/ `
2.STM8、32CubeMX工具6 w3 l1 a% u! L( ^
STM8CubeMX和STM32CubeMX这两个工具我不止一次在公众号提到,ST官方的目前的趋势就是希望用户使用这个工具来开发。4 {4 V# A$ w( a+ a+ `0 ~
而且,大家已经发现,STM32有些新出来的MCU是没有标准外设库了。所以,这两个工具建议大家也要学习。) z# Z6 X8 O0 P' v5 G7 B% O1 @. V
STM8CubeMX目前更新至V1.3.0,只能提供配置,方便了解MCU使用资源情况,还不具备自动生成代码功能,不过我觉得后面应该具有这个功能。! `& Q  Y0 F' j
微信图片_20200610180140.jpg , j4 q7 U. r* T6 L" p/ Y
所以:如果基础不怎么好,建议先STM8,等学到一定基础可以再学STM32。如果自认基础还可以,C语言也行,那么直接上STM32不成问题。
% |5 B  x9 q# r9 _# y: o4 ^
赞 收藏 评论3 发布时间:2020-6-10 18:06

举报

3个回答
李康1202 回答时间:2020-6-11 09:06:43
谢谢分享
老牛洋车 回答时间:2020-6-11 09:21:35
我是直接学习STM32,原因是当时买的STM32F103C8T6最小核心板,某宝12元包邮的哪种。
网络孤客 回答时间:2020-6-11 11:59:07
自己学,肯定是32,工具齐全,资料齐全。; l( S3 W& v: R8 ^' o
8 F( U% U, g/ L8 k1 q2 j  Z
如果只想做低成本小产品,学8吧

所属标签

相似技术帖

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