ST(意法半导体)之STM32

申明

虽然我的专业是信息工程,但是实际上在学校只接触过51单片机,虽然毕业后没有从事嵌入式相关专业的工作,但是还是对自动化控制比较感兴趣,今天说一说STM32相关的内容,相信知道单片机这个东西的朋友或多或少都知道STM32。由于非学术文章,内容可能存在错误,如有还请指出。

单片机?

世界上做单片机的公司有很多,有一些用同样的架构,有些是自主设计的架构。单片机公司有很多:

  • 宏晶的STC89/12系列,大学中非常喜欢的单片机,便宜经典,淘宝上很多套件
  • Atmel的AVR系列,很多人都用过的Arduino uno r3就用的这个。
  • 德州仪器(TI)的MSP系列,没有使用过,据说特点是是低功耗。
  • 当然还要意法半导体(ST)的stm8/stm32,现在stm32用得很多,既便宜性能也高,很多学校和初创公司都在使用。
  • 还要很多不是面向消费者的单片机......

ARM架构

本文主要是STM32相关,那么就不得不说ARM相关的系列了。ARM的产片线比较多,也比较繁琐,从ARM7,ARM9,ARM11到Cortex系列等很多,有些已经过时,有些不是消费市场的产品,这里只讲重点Cortex系列分为三种的产品:

  • Cortex-A (高性能处理器,我们手机的处理器就是此类,我们说的A53,A73核就是指的此系列,例如树莓派4使用的BCM4908就是由四颗Cortex-A53构成,我们的麒麟980就是由4颗A76+4颗A55构成)
  • Cortex-R (实时处理器,个人消费者很少用得到,但是因为其是硬件实时,所以猜测对时间要求高的地方用得到,例如自动驾驶什么的?)
  • Cortex-M (低功耗处理器, 这是本文的重点,我们的STM32就是属于Cortex-M家族)

上面是ARM架构的产品系列,但是它们的架构却是不一样的,它们大部分由ARMV6、ARMV7、ARMV8构成

STM32命名

STM32系列全部基于Cortex-M,STM32的家族众多,不如在介绍命名规则的过程中进行介绍。
首先,我们先到淘宝随便找一个32进行例子:
1.png
本次的列子是STM32F103C8T6:
STM32F103C8T6.png
图片可以在http://file.3gxk.net/?/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/下载

在STM32上的人工智能

在2019年年初,ST在STM32CubeMX软件上发布STM32Cube.AI软件扩展包。通过STM32Cube.AI配合各种库进行训练,该工具可以把训练结果导出为C代码在STM32上运行,点击了解详情

非得用C语言?

事实上STM32并非只能使用C语言进行开发(这里指的是系统级语言,像python和js可以借助MicroPython、Espruino运行),如果对硬件有着更好的控制那么RUST也是不错的方式,作为一门系统级语言当然也可以做C语言能做的事。详细请点击这里查看教程,下面是各自的交叉编译工具:
Cortex-M0, M0+, 和 M1 (ARMv6-M架构):
$ rustup target add thumbv6m-none-eabi

Cortex-M3 (ARMv7-M架构):
$ rustup target add thumbv7m-none-eabi

Cortex-M4 和 M7,没有浮点运算单元 (ARMv7E-M架构):
$ rustup target add thumbv7em-none-eabi

Cortex-M4F 和 M7F,有浮点运算单元 (ARMv7E-M架构):
$ rustup target add thumbv7em-none-eabihf

参考资料:

0 评论