0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

是先学STM8 还是学STM32?

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-04 11:05 次阅读

有朋友问:我学习过51,接下来我是先学习STM8,还是STM32呢?

1写在前面

想要明白这个问题,其实就需要明白STM8和STM32之间有些什么差异,包括MCU基本信息、开发难度、以及应用场景等。

站在客观的角度来说,STM8比STM32学起来更容易,C语言功底还不错的朋友,直接上STM32也不是问题。

从大的方向来说,当你对一种MCU掌握的比较透彻,再学其他型号、其他厂商的MCU,相对来说,上手都要容易的多。

针对本文问题,我下面讲述一下相关知识。

2

STM8和STM32内核差异

STM8 CPU 是一种专有架构,它保持了以前的 ST7 内核的传统,同时在 8 位 CPU 效率和代码密度方面实现了突破。

STM32 围绕行业标准 ARM Cortex-M 32 位内核构建,并受益于与 ARM 处理器有关的开发工具和软件解决方案的完整生态产业环境。

尽管它们被认为是两种完全不同的处理器,但它们在架构方面实际有许多相似之处。

下面对比STM8S 和 STM32F1 (Cortex-M3)这两种内核差异:

两种内核均基于哈佛架构,它们采用 3 级流水线执行,可将执行时间降至最低,对于 STM8S,时钟速度高达 24 MHz,对于 STM32F1系列,时钟速度高达 72 MHz。

在代码密度方面,它们均有优异的表现,这归功于 STM8S 系列的 8 位CISC 指令集以及 STM32F1系列的 Cortex 内核引入的 16 位Thumb-2 模式。

3

片上外设差异

ST 8位和 32位 MCU 产品线之间的片上外设具有一致性,大多数基本 MCU 外设均定义和构建为可从一个产品系列移植到另一个产品系列。

这通过将 8 位外设简单但有效地修改为 32 位字来实现。这样做的好处是可节约成本和功耗,并且资源易于了解。

如果需要更高性能,可在系统层面通过更宽的总线和 DMA 控制器对资源加以补充。在了解了外设的工作原理后,可以将外设应用到 STM8S 和 STM32 系列,从而加速两种器件之间的转换。

ARM 处理器和外设符合 AMBA 总线规范,采用 32 位数据总线,而 STM8S 器件使用更为简单但有效的8 位总线标准。从功能角度看,它们仅在以下方面存在差异:

寄存器大小: 8 位与 16 或 32 位

直接取决于 CPU 运行速度的最大时钟频率

DMA,可通过简单数据管理减轻 CPU 的负荷并提高最大数据吞吐量

一些产品特定功能,如 I/O 端口管理

对比STM8S 和 STM32F1 的 SPI 框图:

SPI寄存器:

从上面框图和寄存器可以看出:除了几个有区别的位和寄存器大小外,寄存器和位的名称以及在寄存器中的位置都是相似的。

4

系统外设

当今的 MCU 是复杂的 SoC(片上系统),其中不仅包含许多外设,还包含一些高级系统特性,旨在缩减物料清单或增强系统的安全性和稳定性。

1.复位

STM8S 和 STM32 基本具有相同的复位电路,仅有细微的差异:

NRST 引脚既是输入也是具有内置上拉电阻的开漏输出。为实现 EMS(电磁敏感度)鲁棒性,插入了一个滤波器以避免毛刺传播到数字电路中。双向复位有三个优点:

对于多 MCU 系统,双向复位可确保在启动或热复位时所有子处理器均正确同步

对于其它 IC,在系统层面还可以使用 MCU 内嵌的电压监控器(上电复位和欠压复位)

当生成假内部复位时,在调试过程中会有很大帮助

2.时钟

STM8和STM32时钟都具有很强大的功能,特别是最近推出的STM32G0具有高精度内部时钟,可以省去外部晶振,减少硬件PCB

STM8不具备倍频功能,各方面相对要弱一点。STM32具有倍频、外设时钟分频等强大功能。同时,STM8和32都具有独立外设时钟使能功能,以降低功耗。

看下STM32F1时钟树,就大概了解有哪些功能了:

3.存储器

两种产品线均基于非易失性存储器并具有一个选项字节加载器。此机制取代了用于 MCU 上电配置的传统熔丝位:用户可以在编程时选择多种选项,这些选项会随程序二进制映像一起写入。

所有新型微控制器都具有以下几个特性:

暂停、停止或待机模式下的复位:可在 MCU 意外进入低功耗模式时避免发生死锁情况,适用于不能处理此类配置的应用

硬件/软件看门狗,可以在复位之后立即通过硬件启动看门狗

存储器读保护,用于防止对程序内容的窃取

存储器写保护,用于保护存储器中包含关键代码的部分。通常,这适用于自举代码或IAP(应用内编程)驱动程序

这些选项可自动使能安全性和可靠性特性,这样即使在 CPU 获取第一个指令之前出现干扰或攻击,应用也可以恢复。

STM8S 和 STM32 器件具有嵌入式自举加载器,通过它可以使用板上串行接口(例如 UART)重新烧写内部 Flash。随后可以将任何具有串行通讯接口的 PC 用作编程工具,来烧写或更新 Flash 以及数据 EEPROM 存储器的内容。 ST 提供了一个软件实用程序来执行自举加载器支持的所有操作。

当然,还有更多系统特性相关的内容,比如安全性、低功耗方面。这些设计都具有高度一致性。

5

软件

STM8和STM32除了上面描述的一些内容具有高度一致性之外,其实,对应我们软件开发工程师来说,软件才是最为关心的一点。

在STM8和STM32产品设计之初,工程师早就考虑过这个问题。因为二者系统、内核及外设都具有一致性,所以软件库也是设计具有一致性。

1.寄存器、库开发

这个我就不说了,从51过来的都知道,对于寄存器比较少的MCU来说,不是问题。对于STM8来说,其实我觉得还好,使用寄存器开发,就是需要更多时间了解寄存器。

我其实不是很建议大家使用寄存器开发,现在STM8有标准外设库,库的API函数接口也容易理解,直接拿来省事,也能方便理解寄存器。

那么对于STM32这种有大量寄存器的MCU,我同样也是不建议大家直接使用寄存器开发,部分功能可以针对库优化成寄存器。

2.STM8、32CubeMX工具

STM8CubeMX和STM32CubeMX这两个工具我不止一次在公众号提到,ST官方的目前的趋势就是希望用户使用这个工具来开发。

而且,大家已经发现,STM32有些新出来的MCU是没有标准外设库了。所以,这两个工具建议大家也要学习。

STM8CubeMX目前更新至V1.3.0,只能提供配置,方便了解MCU使用资源情况,还不具备自动生成代码功能,不过我觉得后面应该具有这个功能。

所以:如果基础不怎么好,建议先STM8,等学到一定基础可以再学STM32。如果自认基础还可以,C语言也行,那么直接上STM32不成问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2266

    文章

    10871

    浏览量

    354791
  • ARM处理器
    +关注

    关注

    6

    文章

    360

    浏览量

    41661
  • 引脚
    +关注

    关注

    16

    文章

    1181

    浏览量

    50274
  • STM8
    +关注

    关注

    18

    文章

    392

    浏览量

    56708
收藏 人收藏

    评论

    相关推荐

    什么是光子

      本文概述了光子,包括其基本原理、关键技术、应用和新兴趋势。 一、光子的基本原理 光子是一门研究光和其他形式辐射能的学科。它涉及使用光学元件、激光、光纤和电子光学仪器来产生、操纵和检测光。它
    的头像 发表于 10-29 06:21 116次阅读

    STM32为什么首选F103C8T6?

    STM32F103C8T6是STMicroelectronics(ST)推出的一款基于ARMCortex-M3内核的32位微控制器单片机(MCU)。它具有一系列优势和广泛的应用场景。这里就来介绍一下
    的头像 发表于 05-18 08:04 4812次阅读
    <b class='flag-5'>学</b><b class='flag-5'>STM32</b>为什么首选F103C<b class='flag-5'>8</b>T6?

    请问STM8如何与STLINK连接?

    帮别人写一个简单的程序...用的是STM8S103F3PMCU 手里有STM32F0308Discovery..下载程序的时候该如何用 Discovery上自带的STLINK给STM8下载程序呢?
    发表于 05-17 07:21

    请问STM8stm32的区别是什么?

    菜鸟群求STM8stm32的区别
    发表于 05-16 06:34

    哪个STM8的开发工具最好用,最便捷?

    最近两天刚开始搞STM8,本以为用过STM32之后,STM8应该很容易的。没想到两天就栽在STM8的开发工具里了,俺实在是才疏学浅,觉得STM8
    发表于 05-15 08:11

    stm8stm32有什么不同?

    stm8stm32有什么不同
    发表于 05-14 07:35

    stm8蜂鸣器引脚关闭时是什么状态?

    请教一下STM8的BEEP引脚(PD4) 第一个问题:需要配置该引脚为推挽输出才能用蜂鸣器吗?还是直接配置蜂鸣器相关寄存器就可以用了? 第二个问题:关闭蜂鸣器以后,该引脚恢复到什么模式,是悬浮输入
    发表于 05-13 07:25

    测试STM8的UART的时候,STM8S003好像烧不进程序了,为什么?

    小弟刚STM8,遇到个问题,望不吝赐教我刚刚在测试STM8的UART的时候,发现我所使用的STM8S003好像烧不进程序了,就是进入debug界面的时候的程序更新了,然后也跳出bus
    发表于 05-11 08:18

    linux下怎样开发STM8

    RT,网上很多都是STM32的,但没有介绍STM8
    发表于 05-07 06:21

    求助,关于STM8供电的疑问求解

    ,led是不是就不能达到5V的最大亮度? 2、led灯和STM8都用5V稳压芯片输出的电压供电。这种情况对STM8有没有影响? 另外,如果我要使用STM8的ADC的话,需不需要再加一颗参考电压芯片,
    发表于 04-29 06:42

    请问学习stm是库函数好还是寄存器好?

    学习stm是库函数好还是寄存器好?
    发表于 04-28 07:18

    IAR FOR ARM和IAR FOR STM8无法共存怎么解决?

    IAR FOR ARM和IAR FOR STM8无法共存, 先用的ARM开发STM32,最近有个STM8的要开发。 电脑:WIN10 64位。 ARM版本:EWARM-CD-8321-18631
    发表于 04-07 07:39

    stm8怎么代替不了stc

    STM8是意法半导体(STMicroelectronics)公司推出的一款8位单片机,而STC是中国STC公司推出的一系列8位单片机产品。尽管两者都是8位单片机,但由于其设计理念、技术
    的头像 发表于 12-26 15:39 2429次阅读

    stm8stm32的区别和特点

    STM8STM32是STMicroelectronics(意法半导体)推出的两个系列的微控制器产品。虽然它们都是由意法半导体生产的,但在架构、功能和特点方面有一些显著的区别。 架构: STM8系列
    的头像 发表于 12-18 16:36 2776次阅读

    SBC CosMx™ SMI成功装机,空间组再升级

    今年6月,SBC与NanoString携手共建DSP空间组“卓越中心”,引进GeoMx DSP,开展空间转录组及蛋白组服务。如今再次联手NanoString,引进华东地区首台CosMx SMI,标志着SBC空间生物全链条创新多组
    的头像 发表于 12-13 17:15 1030次阅读
    SBC CosMx™ SMI成功装机,空间组<b class='flag-5'>学</b>再升级