STM32--STM32 微控制器详解

一、引言

STM32 是一款基于 ARM Cortex-M 内核的 32 位微控制器,是由ST公司使用ARM公司设计的内核在通过完善外围电路,整个封装起来就做成了STM32,现在STM32广泛应用于嵌入式领域。本文将详细介绍 STM32 的特点、内核、系列、外设、命名规则、系统结构、引脚定义、启动配置和最小系统电路等内容。

二、STM32 简介

  1. 名称含义:STM32 是意法半导体(ST)公司基于 ARM Cortex-M 内核开发的 32 位微控制器。其中,“ST” 代表 ST 公司,“M” 是微控制器(Microcontroller)的首字母,“32” 表示这是一款 32 位的单片机。
  2. 性能对比:与 8 位的 51 单片机相比,STM32 的性能更强。ST 公司也推出了 8 位单片机 STM8。
  3. 内部核心:STM32 内部的核心部分是 ARM Cortex-M 内核,由 ARM 公司设计。程序指令的执行、加减乘除的运算等都在内核里完成,相当于整个芯片的 CPU。

三、STM32 的应用领域

STM32 常应用于嵌入式领域,如智能车、无人机、机器人、无线通信、物联网、工业控制和娱乐产品等。

  1. 智能车:可以用 STM32 做一辆循迹小车,读取光电传感器或摄像头的数据,然后驱动电机前进和转弯。
  2. 无人机:用 STM32 读取陀螺仪,根据控制算法控制电机速度,保证飞机稳定飞行。
  3. 机器人:用 STM32 驱动舵机,控制机器人关节,让机器人运动。
  4. 无线通信:给 STM32 连接 2.4G 无线模块、蓝牙或 WiFi 模块,使其具备无线通信能力。
  5. 物联网:借助无线模块通信,通过 STM32 驱动继电器控制 220 伏电路通断。
  6. 工业控制:国产 PLC(工厂进行内部控制的) 内部主控可能是一块 STM32。
  7. 娱乐产品:可以用 STM32 做爱心流水灯等娱乐电子产品。

四、STM32 家族系列

目前 STM32 主要有四个系列:高性能系列、主流系列、超低功耗系列和无线系列。

  1. 高性能系列:有 STM32 F2、F4、F7、H7 等,如 STM32 H7 芯片是目前最强的 STM32 芯片,拥有双核微控制器。
  2. 主流系列:本次教程使用的是 STM32 F1 系列,如 STM32 F103 C8T6,内核是 ARM Cortex-M3,主频 72 兆赫兹,RAM 大小 20K,ROM 大小 64K,供电电压 2.0 - 3.6 伏,标准 3.3 伏供电。
  3. 超低功耗系列:有 L0、L1、L4、L5 等型号。
  4. 无线系列:有 STM32 WL 和 STM32 WB。
    STM32家族系列图
    补充:图片中的CoreMark是内核跑分,一般数字越大,性能越高

五、ARM 内核介绍

  1. ARM 公司:ARM 公司是全球领先的半导体知识产权(IP)提供商,只设计 ARM 内核而不生产实物,授权给各大厂商,收取授权费盈利。
  2. 内核型号:ARM 公司针对不同应用场景生产了各种型号的内核,STM32 使用的 Cortex-M 内核是其中一种。ARM 内核在 ARM 11 之后更改了命名方式,推出了 Cortex 系列,包括 A、R、M 三个子系列,分别适用于高端应用、实时性高的场景和单片机领域。
    ARM芯片型号合集

六、STM32F103C8T6的相关介绍

  1. 内核:ARM Cortex-M3 内核,具有 177 的内核跑分,主频为 72 兆赫兹。
  2. 存储:RAM(运行内存,实际的存储介质是SRAM) 大小 20K,ROM(程序存储器,实际存储介质为 flash 闪存)大小 64K。
  3. 供电:供电电压为 2.0 - 3.6 伏,标准 3.3 伏供电。与 51 单片机的 5 伏供电不同,若有 5 伏电压输入,需加稳压芯片降至 3.3 伏后再给芯片供电。
  4. 封装:采用 LQFP48 封装,共有 48 个引脚。

七、STM32 F103 C8T6 的片上资源和外设

STM32F103C8T6 的片上资源丰富,又称为外设(peripheral),可通过程序配置外设来完成各种功能。以下是对其片上资源的详细介绍:

  1. 位于 Cortex-M3 内核里面的外设
    NVC(嵌套向量中断控制器):用于管理中断,比如配置中断优先级等。
    CS(系统定时器):主要给操作系统提供定时服务,STM32 可以加入操作系统如 FreeRTOS、UCOS等,若使用这些操作系统,需要此定时器提供定时来进行任务切换功能。在本课程不使用操作系统的情况下,也可以用这个定时器完成类似 delay 函数的功能。
  2. 位于 Cortex-M3 内核以外的外设
    RCC(复位和时钟控制):可以对系统的时钟进行配置,并且使能各模块的时钟。在 STM32 中,其他外设在上电的情况下默认是没有时钟的,不给时钟的情况下操作外设是无效的,外设也不会工作,这样的目的是降低功耗。所以在操作外设之前,必须要用 RCC 来完成时钟的使能。
    GPIO(通用 I/O 口):可以用 GPIO 来点灯、读取按键等,这是单片机最基本的功能之一。
    AFIO(复用 I/O 口):可以完成复用功能端口的重定义,还有中断端口的配置。
    EXTI(外部中断):配置好外部中断后,当引脚有电平变化时,可以触发中断,让 CPU 来处理任务。
    TIM(定时器):这是整个 STM32 最常用、功能最多的外设。TIM 分为高级定时器、通用定时器、基本定时器三种类型。其中高级定时器最为复杂,常用的是通用定时器。这个定时器不仅可以完成定时中断的任务,还可以完成测频率、生成 PWM 波形、配置成专用的编码器接口等功能。PWM 波形是电机驱动、舵机驱动最基本的要求。
    ADC(模数转换器):STM32 内置了 12 位的 ADC 转换器,可以直接读取 IO 口的模拟电压值,无需外部连接 ADC 芯片,使用非常方便。
    DMA(直接内存访问):可以帮助 CPU 完成搬运大量数据这样的繁杂任务。
    USART(同步或异步串口):平时用的 USART 是异步串口的意思,这里的 USART 既支持异步串口,也支持同步串口,实际还是用异步串口比较多。
    I2C 和 SPI(通信协议):STM32 也内置了它们的控制器,可以用硬件来输出时序波形,使用起来更高效。当然用通用 IO 口来模拟时序波形也是没有问题的。
    CAN:一般由于汽车领域的通信。
    USB:利用 STM32 的 USB 外设,可以做一个模拟鼠标、模拟 U 盘等设备。
    RTC(实时时钟):在 STM32 内部完成年月日时分秒的计时功能,而且可以接外部备用电池,即使掉电也能正常运行。
    CRC(校验):是一种数据的校验方式,用于判断数据的正确性,有了这个外设的支持,进行 CRC 校验就会更加方便一些。
    PWR(电源控制):可以让芯片进入睡眠模式等状态,来达到省电的目的。
    BKP(备份寄存器):这是一段存储器,当系统掉电时,仍可有备用电池保持数据,根据需要可以完成一些特殊功能。
    IWDG(独立看门狗)\ WWDG(窗口看门狗):当单片机因为电池干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定。
    DAC(数模转换器):可以在 IO 口直接输出模拟电压,是 ADC 模数转换的逆过程。
    SDIO(SD 卡接口):可以用来读取 SD 卡。
    FSMC(可变静态存储控制器):可以用于扩展内存或者配置成其他总线协议,用于某些硬件的操作。
    USB OTG(USB 主机接口):用 OTG 功能,可以让 STM32 作为 USB 主机,去读取其他 USB 设备。
    需要注意的是,这是 STM32F1 整个系列的所有外设,并不是所有型号都拥有全部外设,比如 STM32F103C8T6 就没有后面四个外设(SDIO、FSMC、USB OTG、DAC)。
    STM32中的片上资源

八、STM32 F103 C8T6 的命名规则和系统结构

  1. 命名规则:STM32 代表基于 ARM 核心的 32 位微控制器,F 代表通用类型,103 代表增强型,C 代表引脚数目是 48,8 代表 flash 闪存容量是 64K,T 代表封装类型是 LQFP,6 代表温度范围为 -40 - 85 摄氏度。
  2. 系统结构:STM32 F103 C8T6 的系统结构分为四个部分,左上角是 Cortex-M3 内核,引出三条总线连接 flash 闪存和其他外设。内核还通过系统总线连接 RAM、FMC 等。AHB(先进高性能总线)用于挂载主要外设,通过桥接连接到 APB(先进外设总线),APB2 性能比 APB1 高。右下角是外设种类和分布,左下角是 DMA(直接内存访问),可以作为内核 CPU 的小秘书,负责数据搬运等简单重复的工作。
    STM32命名规则

九、STM32F103C8T6的系统结构

  1. 整体结构划分
    可以将 STM32 的系统结构分为四个部分:
    左上角:Cortex-M3 内核。内核引出三条总线,分别是 ICode 的指令总线、DCode 的数据总线和 System 系统总线。
    ICode 总线主要用于加载程序指令,连接到 Flash 闪存,Flash 中存储着编写的程序。
    DCode 总线用于加载数据,如常量和调试参数等。
    左下角:DMA(直接内存访问)部分。DMA 可以看作是内核 CPU 的小秘书,主要负责一些简单且反复的数据搬运工作。DMA 通过 DMA 总线连接到总线矩阵上,它可以拥有和 CPU 一样的总线控制权,用于访问外设。当需要 DMA 搬运数据时,外设会通过请求线发送 DMA 请求,然后 DMA 获得总线控制权,访问并转运数据,整个过程不需要 CPU 的参与,节省了 CPU 的时间。
    右下角:主要介绍外设种类和分布。
    中间部分:包括连接内核与外设的各种总线和桥接。
  2. 总线系统
    AHB(先进高性能总线):用于挂载主要的外设,一般是最基本的或者性能比较高的外设,比如复位和时钟控制等最基本的电路,以及 SD 卡控制器(SDIO)也挂载在 AHB 上。
    两个桥接:连接到 APB2 和 APB1 两个外设总线上。由于 APB2 和 APB1 的总线协议、总线速度以及数据传送格式存在差异,所以需要这两个桥接来完成数据的转换和缓存。
    APB2(先进外设总线 2):性能比 APB1 高一些,一般和 AHB 同频率,都是 72 兆赫兹。连接的都是一些外设中稍微重要的部分,比如 GPIO 端口,还有一些外设的 1 号选手,如 USART、SPI、TIM(高级定时器 TIM8 和其他通用定时器等)、ADC、EXTI、AFIO 等也接在 APB2 上面。
    APB1(先进外设总线 1):一般是 36 兆赫兹。连接的是一些相对次要一点的外设,如 DAC、PWR、BKP 等。
    STM32系统结构

十、STM32 F103 C8T6 的引脚定义和启动配置

  1. 引脚定义:引脚分为电源相关、最小系统相关和 I/O 口功能口。其中,VBAT 是备用电池供电引脚,可接 3 伏电池为 RTC 和备份寄存器供电;多个引脚可作为 I/O 口、侵入检测或 RTC 引脚;系统复位引脚 NIST 是低电平复位;多个引脚可作为启动配置引脚(BOOT0 和 BOOT1)、调试端口或普通 I/O 口。
  2. 启动配置:通过配置 BOOT0 和 BOOT1 引脚选择启动模式。一般情况下,程序在 flash 程序存储器开始执行;也可以配置为系统存储器模式,用于串口下载程序;还可以配置为内置 SRAM 驱动S
    STM32引脚定义

十一、STM32 最小系统电路

一般来说,单片机只有一个芯片是没有办法工作的,需要为它连接最基本的电路,这些最基本的电路就叫做最小系统电路。STM32 最小系统电路包括供电部分、晶振部分、复位电路和启动配置部分、下载端口。

  1. 供电部分:芯片四周有多个供电引脚,采用分区供电。主电源和模拟部分电源连接供电引脚,VSS 接地,VDD 接 3.3 伏,之间可连接滤波电容保证供电稳定。VBAT 可接备用电池,为 RTC 和备份寄存器服务,若不需要此功能可悬空或接 3.3 伏。
    晶振部分:主时钟晶振一般为 8 兆赫兹,经过内部锁相环倍频得到 72 兆赫兹主频。晶振引脚通过网络标号连接到 STM32 的特定引脚,并接两个 20pF 的电容作为起振电容,另一端接地。若需要 RTC 功能,还需接一个 32.768 千赫兹的晶振。
  2. 复位电路:由 10k 电阻和 0.1 微法电容组成,为单片机提供复位信号。上电瞬间电容短路,NIST 引脚产生低电平,电容充满电后相当于断路,NIST 被上拉为高电平,完成上电复位。电容左边并联按键可实现手动复位。
    启动配置:使用跳线帽或拨码开关配置 BOOT 引脚的高低电平,选择启动模式。
    下载端口:使用 ST-Link 下载程序时,需引出 SWDIO 和 SWCLK 引脚,以及 3.3 伏和接地引脚。
    STM32最小系统电路

十二、总结

本文详细介绍了 STM32 的基本情况、ARM 内核参数、外设命名规则、系统结构、引脚定义、启动配置和最小系统电路等内容。STM32 功能强大、性能优异、片上资源丰富,是一款经典的嵌入式微控制器。要深入了解 STM32,可查看官方提供的文档资料。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值