
01 写在前面 想要明白这个问题,其实就需要明白STM8和STM32之间有些什么差异,包括MCU基本信息、开发难度、以及应用场景等。7 L$ d8 u& r0 D1 V* S 站在客观的角度来说,STM8比STM32学起来更容易,C语言功底还不错的朋友,直接上STM32也不是问题。" {/ C8 T1 b+ ~9 H, ?/ `6 J- R' P 从大的方向来说,当你对一种MCU掌握的比较透彻,再学其他型号、其他厂商的MCU,相对来说,上手都要容易的多。 针对本文问题,我下面讲述一下相关知识。% I4 S* Z! W6 n' z6 _) l 02 STM8和STM32内核差异 STM8™ CPU 是一种专有架构,它保持了以前的 ST7 内核的传统,同时在 8 位 CPU 效率和代码密度方面实现了突破。 STM32 围绕行业标准 ARM® Cortex™-M 32 位内核构建,并受益于与 ARM 处理器有关的开发工具和软件解决方案的完整生态产业环境。 尽管它们被认为是两种完全不同的处理器,但它们在架构方面实际有许多相似之处。 下面对比STM8S 和 STM32F1 (Cortex-M3)这两种内核差异:- U( g. \4 N$ q ![]() 两种内核均基于哈佛架构,它们采用 3 级流水线执行,可将执行时间降至最低,对于 STM8S,时钟速度高达 24 MHz,对于 STM32F1系列,时钟速度高达 72 MHz。 在代码密度方面,它们均有优异的表现,这归功于 STM8S 系列的 8 位 CISC 指令集以及 STM32F1系列的 Cortex 内核引入的 16 位 Thumb-2 模式。" C2 Z! V8 S0 w' h y! h 03 片上外设差异这通过将 8 位外设简单但有效地修改为 32 位字来实现。这样做的好处是可节约成本和功耗,并且资源易于了解。 如果需要更高性能,可在系统层面通过更宽的总线和 DMA 控制器对资源加以补充。在了解了外设的工作原理后,可以将外设应用到 STM8S 和 STM32 系列,从而加速两种器件之间的转换。 [) e# i+ w! R* [! T# Y. W ARM 处理器和外设符合 AMBA 总线规范,采用 32 位数据总线,而 STM8S 器件使用更为简单但有效的 8 位总线标准。从功能角度看,它们仅在以下方面存在差异:
对比STM8S 和 STM32F1 的 SPI 框图:$ r; \) K! l* P' X/ I0 ~( ~ B ![]() SPI寄存器:" K) n; I# o3 i( f% o$ u- _1 K# P, K ![]() 从上面框图和寄存器可以看出:除了几个有区别的位和寄存器大小外,寄存器和位的名称以及在寄存器中的位置都是相似的。 04 系统外设1.复位6 Z8 f6 @9 e0 T' r/ a& | STM8S 和 STM32 基本具有相同的复位电路,仅有细微的差异: ![]() NRST 引脚既是输入也是具有内置上拉电阻的开漏输出。为实现 EMS(电磁敏感度)鲁棒性,插入了一个滤波器以避免毛刺传播到数字电路中。双向复位有三个优点:
2.时钟! J1 ?' O( {; P X- `7 V5 R STM8和STM32时钟都具有很强大的功能,特别是最近推出的STM32G0具有高精度内部时钟,可以省去外部晶振,减少硬件及PCB。2 f# `. k: }/ G' ?: N STM8不具备倍频功能,各方面相对要弱一点。STM32具有倍频、外设时钟分频等强大功能。同时,STM8和32都具有独立外设时钟使能功能,以降低功耗。 \; j: G* Y: f% c8 e 看下STM32F1时钟树,就大概了解有哪些功能了: ![]() 3.存储器 两种产品线均基于非易失性存储器并具有一个选项字节加载器。此机制取代了用于 MCU 上电配置的传统熔丝位:用户可以在编程时选择多种选项,这些选项会随程序二进制映像一起写入。* j; x, t' |0 x- d( u% h% v+ B, @% g 所有新型微控制器都具有以下几个特性:. o& p6 b* M% u9 G! @- K% o
这些选项可自动使能安全性和可靠性特性,这样即使在 CPU 获取第一个指令之前出现干扰或攻击,应用也可以恢复。 STM8S 和 STM32 器件具有嵌入式自举加载器,通过它可以使用板上串行接口(例如 UART)重新烧写内部 Flash。随后可以将任何具有串行通讯接口的 PC 用作编程工具,来烧写或更新 Flash 以及数据 EEPROM 存储器的内容。 ST 提供了一个软件实用程序来执行自举加载器支持的所有操作。 当然,还有更多系统特性相关的内容,比如安全性、低功耗方面。这些设计都具有高度一致性。9 r A; }) _) [, k- u 05 软件在STM8和STM32产品设计之初,工程师早就考虑过这个问题。因为二者系统、内核及外设都具有一致性,所以软件库也是设计具有一致性。 1.寄存器、库开发 这个我就不说了,从51过来的都知道,对于寄存器比较少的MCU来说,不是问题。对于STM8来说,其实我觉得还好,使用寄存器开发,就是需要更多时间了解寄存器。8 l! u; j4 H% e! o9 h" L; `! l9 P: d 我其实不是很建议大家使用寄存器开发,现在STM8有标准外设库,库的API函数接口也容易理解,直接拿来省事,也能方便理解寄存器。 那么对于STM32这种有大量寄存器的MCU,我同样也是不建议大家直接使用寄存器开发,部分功能可以针对库优化成寄存器。 * P2 L0 [+ `# Q' o4 J 2.STM8、32CubeMX工具9 s) b9 A; t4 s3 q STM8CubeMX和STM32CubeMX这两个工具我不止一次在公众号提到,ST官方的目前的趋势就是希望用户使用这个工具来开发。 而且,大家已经发现,STM32有些新出来的MCU是没有标准外设库了。所以,这两个工具建议大家也要学习。 STM8CubeMX目前更新至V1.3.0,只能提供配置,方便了解MCU使用资源情况,还不具备自动生成代码功能,不过我觉得后面应该具有这个功能。 ![]() 所以:如果基础不怎么好,建议先STM8,等学到一定基础可以再学STM32。如果自认基础还可以,C语言也行,那么直接上STM32不成问题。 |
STM8自学笔记(推荐STM8很好的入门电子书)
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
STM8S 直流电机例程及相关资料
无刷直流电机控制应用+基于STM8S系列单片机---电子书
$ T9 ^( b/ X2 m7 J/ b
如果只想做低成本小产品,学8吧