前言

在中国,熟悉单片机的人士大多会听说过STM32。这是意法半导体(STMicroelectronics, 简称ST)的32位微控制器(MCU)家族,基于ARMCortex-M内核。

2007年,STM32F1诞生。这是业界首款搭载ARM Cortex-M3内核的32位MCU,采用180nm闪存工艺,配有128KB闪存和20KB RAM,运行主频为72MHz,在当时属于相当高的配置。

随后的10年内,STM32产品线相继加入了基于ARM Cortex-M0、Cortex-M4和Cortex-M7的产品,产品线覆盖通用型、低成本、超低功耗、高性能低功耗以及甚高性能类型。

一、初识STM32

1.1 ARM处理器简介

这里需要补充一下ARM公司知识点。

ARM公司在经典处理器ARM11以后的产品改用Cortex命名,老式的则命名为Classic系列,并分成A、R和M三类,旨在为各种不同的市场提供服务,见下图。

Cortex系列属于ARMv7架构,ARMv7架构定义了三大分工明确的系列:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用;“R”系列针对实时系统;“M”系列对微控制器。

由于应用领域不同,基于v7架构的Cortex处理器系列所采用的技术也不相同,基于v7A的称为Cortex-A系列,基于v7R的称为Cortex-R系列,基于v7M的称为Cortex-M系列。

ARM Cortex™-A

ARM Cortex™-A 系列应用型处理器可向托管丰富OS平台和用户应用程序的设备提供全方位的解决方案,从超低成本手机、智能手机、移动计算平台、数字电视和机顶盒到企业网络、打印机和服务器解决方案。高性能的Cortex-A15、可伸缩的Cortex-A9、经过市场验证的Cortex-A8处理器和高效的Cortex-A7和Cortex-A5处理器均共享同一架构,因此具有完全的应用兼容性,支持传统的 ARM、Thumb指令集和新增的高性能紧凑型Thumb-2指令集。

Cortex-A15 和 Cortex-A7 都支持 ARMv7A 架构的扩展,从而为大型物理地址访问和硬件虚拟化以及处理 AMBA4 ACE 一致性提供支持。同时,这些都支持big.LITTLE 处理。

ARM在Cortex-A系列处理器大体上可以排序为:Cortex-A57处理器、Cortex-A53处理器、Cortex-A15处理器、Cortex-A9处理器、Cortex-A8处理器、Cortex-A7处理器、Cortex-A5处理器、ARM11处理器、ARM9处理器、ARM7处理器,再往低的部分手机产品中基本已经不再使用。 需要指出的是,单从命名数字来看Cortex-A7似乎比A8和A9低端,但是从ARM的官方数据看,A7的架构和工艺都是仿照A15来做的,单个性能超过A8并且能耗控制很好。另外A57和A53属于ARMv8架构。

ARM Cortex-R

ARM Cortex-R实时处理器为要求可靠性、高可用性、容错功能、可维护性和实时响应的嵌入式系统提供高性能计算解决方案。

Cortex-R 系列处理器通过已经在数以亿计的产品中得到验证的成熟技术提供极快的上市速度,并利用广泛的 ARM 生态系统、全球和本地语言以及全天候的支持服务,保证快速、低风险的产品开发。

许多应用都需要 Cortex-R 系列的关键特性,即:

  • 高性能:与高时钟频率相结合的快速处理能力

  • 实时:处理能力在所有场合都符合硬实时限制

  • 安全:具有高容错能力的可靠且可信的系统

  • 经济实惠:可实现最佳性能、功耗和面积的功能。

  • Cortex-R 系列处理器与Cortex-M和Cortex-A系列处理器都不相同。显而易见,Cortex-R 系列处理器提供的性能比 Cortex-M 系列提供的性能高得多,而 Cortex-A 系列专用于具有复杂软件操作系统(需使用虚拟内存管理)的面向用户的应用。

ARM Cortex™-M

ARM Cortex™-M处理器系列是一系列可向上兼容的高能效、易于使用的处理器,这些处理器旨在帮助开发人员满足将来的嵌入式应用的需要。这些需要包括以更低的成本提供更多功能、不断增加连接、改善代码重用和提高能效。

Cortex-M 系列针对成本和功耗敏感的MCU和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。

1.2 STM32 MCU产品分类

STM32分为4种不同系列产品:高性能产品、主流产品、超低功耗产品以及无线产品,见下图。

从上图可知,STM32开发了基于M0、M4、M7以及A7四种内核的MCU产品。 为什么ARM Cortex-M的内核要划分出这么多的型号呢?主要是针对不同的应用领域,下图是官方给出的区别。

上图囊括了ARM公司所有Cortex-M内核,ST意法公司选择了M0、M4、M7以及A7研发了MCU产品,图中的内容精简为一句话:数字越大,性能越高

二、STM32产品选型

2.1 高性能产品

STM32的高性能产品又细分为STM32F2、STM32F4、STM32F7和STM32H7共四个系列。如,STM32F2系列基于包含STM32F205/215 和STM32F207/217 2款产品。

2.2 STM32 MCU型号命名规则

知道型号命名规则后,就可以依据需要订购正确的MCU。


总结

再次以一张图的方式总结一下四大类型产品各自特点。

零基础入门STM32编程(一)相关推荐

  1. 零基础入门STM32编程(三)

    前情回顾 通过前面两篇文章的学习,我们已经对STM32有了一定的了解,知道了STM32单片机的基本分类和不同产品间的特点等知识,今天起围绕STM32F103xx继续深入浅出地学习单片机编程. 一.总线 ...

  2. 零基础入门STM32编程(二)

    前情回顾 上篇文章初步认识了STM32,了解了STM32的分类及型号命名规则,本篇内容继续STM32串口编程入门学习. 一 走进STM32 STM32的单片机分为四类,主流单片机又分为五种,四类介绍参 ...

  3. 零基础入门STM32编程——GPIO(五)

    系列教程链接 HAL库编程点灯篇https://blog.csdn.net/oHaoEr/article/details/122999523 一 GPIO简介 1.1 概述 GPIO(通用输入输出端口 ...

  4. 零基础入门STM32编程(七)——定时器篇(HAL)

    前情回顾 上一篇讲解了HAL库函数点灯,初步学习了如何使用CUBE MX创建工程文件,以及文末送出了获取HAL库函数API手册方法的小福利,本篇将继续学习HAL库函数中的定时器API使用方法. 一 初 ...

  5. python编程零基础-如何零基础入门Python编程?

    Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...

  6. 一篇文章让你从JAVA零基础入门`OOP`编程12.19

    一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后,整理的文章,文中对知识点的解释仅为个人理解. 配套PPT,站点源码,等学习资料 一.预科 1.1 JAVA 介 ...

  7. 一篇文章让你从JAVA零基础入门`OOP`编程12.20

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(QQ_3336392096.png)] 一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后, ...

  8. 一期完结《一篇文章让你从JAVA零基础入门`OOP`编程》12.21

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(QQ_3336392096.jpg)] 一篇文章让你从JAVA零基础入门OOP编程 前言: 此文为玄子,复习ACCP-S1课程后, ...

  9. 先转行从零基础入门学编程可以吗?

    现在想转行程序猿零基础入门第一选择还是强烈推荐Java: 不要误会,我不是带着主观意愿来表达想法的,可以会有人觉得现在Python不是才最火吗?这个雀氏,我无法反驳哈: 但我们必须要明白Java和Py ...

  10. python编程语言零基础入门,Python编程基础知识点

    python语言基础知识有哪些? python语言基础知识如下:1.Python语言是一种解释型.面向对象的编程语言,是一种开源语言.2.表达式从左到右在同一个基准上书写. 3.对象的含义:对象是某个 ...

最新文章

  1. Hexo Next 博客添加相册瀑布流
  2. 力软 框架 转 mysql_快速web开发框架——learun framework
  3. MATLAB中nargin 的用法
  4. 李宏毅-ELMO、BERT、GPT视频笔记
  5. Angular应用页面里appId的生成逻辑和位置
  6. wpf 大数据界面_24小时删!WPF 界面开发可视化数据源500行代码分享
  7. python字典变量定义_Python字典,函数,全局变量代码解析
  8. 硬盘坏了怎么恢复数据,需要哪些设备
  9. 六类网线钳能压五类水晶头吗_多功能网线钳的使用方法?“普通网线钳”能压“七类水晶头”吗?...
  10. 怎么提供电子邮件副本_停止提供您的电话号码和电子邮件
  11. Android神笔之Paint
  12. java访问domino数据库_关于Java与Domino数据库之间的操作
  13. sql join备忘
  14. c语言中的stdbool.h头文件,【C语言】中的stdbool.h头文件
  15. hbw-utils - 基本数据类型进制转换的实现
  16. 博士发表2篇以上高水平论文,就可直聘为副教授或教授!高校重磅引才来袭!...
  17. ios android流畅度,流畅度如iOS!国内最流畅Android手机推荐
  18. 计算机考试准考证号格式
  19. mysql怎么安装安全补丁_MySQL 安装与安全优化
  20. 10.Spring面试题

热门文章

  1. 西门子PLC指令寻址方式
  2. TypeScript 获取时间戳
  3. c语言写32位编译器,MinGW32 GCC编译器 V8.1 32位免费版
  4. java包和导入和类路径,lesson09Java包和导入和类路径.ppt
  5. vyos配置dns迭代查询
  6. java下载文件到本地
  7. Unity2D入门(一):编辑素材、绘制地图
  8. 易辅客栈-编写手游模拟器辅助脚本-征途
  9. Shiro 详细教程(集各教程内容为一体)
  10. Java案例:实现九九乘法表