Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

什么是 STM32?

  • ST:意法半导体(由意大利 SGS 与法国 Thomson 合并成立)
  • M:Micro Controller,微控制器(即常说的单片机)
  • 32:表示这是一个 32 位 的单片机

为什么用 STM32?

  • 性能强:比 51、AVR、PIC 等 8/16 位单片机强,能跑 RTOS
  • 外设全:GPIO、USART、I2C、SPI、CAN、ADC/DAC、定时器、DMA 等
  • 生态完善:CubeMX、CubeIDE、社区资料、中文教程丰富
  • 选型灵活:从几块钱的低端型号到高性能型号都有

在哪用?

主要应用于工业控制、消费电子、IoT(物联网)、电机控制、汽车电子、医疗设备等场景。


STM32 产品系列

  • G 系列(通用)
  • F 系列(主流)
    • F0(Cortex-M0 内核,48 MHz 主频)
    • F1(Cortex-M3 内核,72 MHz 主频)
      • F100(低成本,外设精简)
      • F101
      • F102
      • F103
      • F105 / F107(互联型,通信外设丰富,如以太网、CAN、USB OTG 等)
    • F2(Cortex-M3 内核,120 MHz 主频)
    • F3(Cortex-M4 内核,72 MHz 主频)
    • F4(Cortex-M4 内核,180 MHz 主频)
    • F7(Cortex-M7 内核,216 MHz 主频)
  • H 系列(高性能)
  • L 系列(低功耗)
  • W 系列(无线)

STM32F103C8T6 介绍

型号解析

字段 含义 详细说明
ST 品牌 意法半导体
M32 产品类型 32 位单片机
F103 产品系列 主流型,M3 内核,72 MHz
C 引脚数量 48 引脚
8 FLASH 容量 64 Kbytes
T 封装类型 LQFP
6 温度范围 -40 ~ 85 ℃

相关手册

  • 数据手册:类似规格书,给出产品的性能指标和参数
  • 参考手册:类似说明书,教你芯片怎么用、怎么编程

引脚分布

查看 STM32F103xx 数据手册:在 Pinouts and pin description 目录(引脚分配和引脚描述)中有 Figure 6. STM32F103xx performance line LQFP48 pinout(图 6. STM32F103xx 高性能系列 LQFP48 的引脚分配)。

如下图所示:

STM32F103C8T6 引脚分布图

注意:引脚编号的一般规则是——黑色圆点附近是 1 脚,编号逆时针递增。

在数据手册中,将引脚分为 普通 I/O 引脚 和 特殊引脚。

特殊引脚

引脚 功能 说明
VDD 供电 + 接 3.3 V
VSS 地 接地 0 V
NRST 复位 接复位按钮,程序从头开始执行
VBAT 备用电源
BOOT0 启动模式选择

普通引脚命名规则

以字母作为组编号,以数字作为引脚编号:

1
2
3
4
GPIOA:PA0  PA1  PA2 …… PA15
GPIOB:PB0 PB1 PB2 …… PB15
GPIOC:PC13 PC14 PC15
GPIOD:PD0 PD1

单片机内部结构框图

在数据手册 Pinouts and pin description 这一目录中,可以找到单片机的内部结构框图如下:

单片机内部结构框图

该图看起来比较复杂,可以简化一下。下图是简化图,用于认识片上外设:

单片机内部结构简化图


GPIO 工作模式

GPIO 的工作模式有 8 种:4 种输入,4 种输出。

什么是工作模式?

工作模式就是 I/O 引脚的使用方式。这里的工作模式是针对单片机的一根 I/O 引脚所说的,每一个 I/O 引脚都可以选择这 8 种工作模式之一。

为什么有这么多种工作模式?

I/O 引脚需要在工作场景中承担不同的工作任务,因此在设计中要把 I/O 引脚设计得足够灵活。

在数据手册 General-purpose and alternate-function I/Os(GPIOs and AFIOs) 这一目录中找到以下 I/O 引脚的基本结构:

I/O 引脚的基本结构

GPIO 的 4 种输出模式

  • 通用输出推挽
  • 通用输出开漏
  • 复用输出推挽
  • 复用输出开漏

推挽

P-MOS 和 N-MOS 交替导通输出高低电平:

  • 输出 1 时,P-MOS 管导通,N-MOS 管截止;
  • 输出 0 时,N-MOS 管导通,P-MOS 管截止。

开漏

P-MOS 一直保持断开,相当于 N-MOS 管的漏极开漏了:

  • 输出 0 时,N-MOS 管导通;
  • 输出 1 时,N-MOS 管断开,处于高阻抗,需要外加上拉电阻才能输出 1。

通用

通过 CPU 直接向输出数据寄存器写值,然后再经过输出控制电路控制两个 MOS 管的导通和关断,来控制 I/O 引脚的输出。

复用

其他片上外设(除了 GPIO 片上外设)经过输出控制电路控制两个 MOS 管的导通和关断,来控制 I/O 引脚的输出。


I/O 引脚的最大输出速度

定义:向 I/O 引脚交替写 1 和 0,且输出波形不失真的最快速度。

在理想情况下,高电平到低电平的跳变是瞬间完成的;而实际情况中,波形存在 上升时间、下降时间 和 保持时间。理想情况与实际情况的对比如下图:

上升保持下降

上升时间和下降时间限制了 I/O 引脚的最大输出速度。由于上升时间和下降时间相对固定,当保持时间不断缩小时,波形会逐渐趋于稳定状态;直到上升时间与下降时间相连,保持时间消失,稳定电平便无法维持。除非改变上升时间和下降时间,否则波形将无法正常变化。如下图所示:

保持时间不断缩小

最大输出速度与时钟频率(MHz)正相关:MHz 越高,最大输出速度越高。影响 STM32F103C8T6 最大输出速度的,有以下 3 个时钟频率可供选择:

STM32F103C8T6的时钟频率

了解这 3 个时钟频率后,可按照以下方式选择:

最大输出速度的选择

❓ 存疑:某元件数据手册中单位出现 Mbps 时,如何挑选对应的 MHz,待搞懂。


GPIO 的 4 种输入模式

  1. 上拉输入:使能上拉电阻,提供默认的高电压。

    ❓ 待整理(9.22):什么是“默认高电压”?(目前不太懂,需要整理)

  2. 下拉输入:使能下拉电阻,提供默认的低电压。
  3. 浮空输入
  4. 模拟输入

STM32F103C8T6 一般的输入引脚结构如数据手册图中所示:

输入引脚结构图

📌 待补充:详细选择方法待补充。

串口

数据帧格式

奇偶校验

奇校验示例

常用的波特率

USART片上外设内部结构

库函数的USART的参数

手写USART的初始化参数

I2C协议:
全称是Inter-Integrated Circuit。inter:之间,相互;Intergrated Circuit:集成电路
合起来就是“集成电路之间”的通信总线。缩写时IIC或I2C。

评论