准备阶段
完成了 keil5 工具的安装
stm32 的基本信息
由意法半导体公司开发的 32 位单片机,作为中控
| ST | M32 | F103 | C8T6 |
| 品牌 | 产品信息 | 产品系列 | 规格型号 |
| 意法半导体 | 32位单片机 | 主流型 M3内核 72MHz | 48 引脚 64kFlash LQFP封装 -40~85℃ |
G系列 通用; F系列 主流; H系列 高性能; L系列 低功耗; W系列 无线
C8T6:
- 引脚数量 48 ©,
- Flash 容量 8Kbit ,
- 封装类型 T = LQFP ,
- 温度范围 6 = -40~85℃
- T = 36; C = 48; R = 64; V = 100; Z = 144;
- H = BGA; I = UFBGA; T = LQFP; U = VFQFPN (封装类型表示焊盘形状)
- 6 = -40~85 ℃
- 7 = -40~105 ℃
stm32 引脚分布
根据 LQFP48 找到引脚分布图

引脚排列规则:左上角为 1 号,逆时针排序
特殊引脚
- VDD : 供电+ (3.3V)
- VSS : 接地 0V
- NRST : 复位 接复位按钮
- VBAT : 备用电池
- BOOT0 : 启动模式选择
为何不用 VSS

普通引脚的命名规则
- 以字母作为组编号
- 以数字作为引脚编号
例如:
- GPIOA : PA0 PA1 PA2 … PA15 (16个)
- GPIOB : PB0 PB1 PB2 … PB15 (16个)
- GPIOC : PC13 PC14 PC15
- GPIOD : PD0 PD1
| 注意:引脚编号连续,在实际位置上不一定连续
GPIO
GPIO 是什么?
片上外设,类似于人体的器官,可以独立完成一些任务

有什么功能?
可以控制 IO 引脚,见 1.3.3 举例,GPIO 可以控制其对应的一组引脚
的八种工作模式
| 输入 | 输出 |
|---|---|
| 通用输出推挽 | 输入上拉 |
| 通用输出开漏 | 输入下拉 |
| 复用输出推挽 | 输入浮空 |
| 复用输出开漏 | 模拟模式 |

输入

推挽
- 推(Push): 寄存器为 0 接入 Vss 向外推电流
- 挽(Pull): 寄存器为 1 接入 Vdd 从外向里拉电流

开漏
开漏模式下,P-MOS 始终保持断开,寄存器为 0 时接入 Vss 输出低电压,寄存器位 1 时引脚悬空,进入高阻抗状态

通用和复用
通用模式下,直接通过编程 CPU 控制 IO 引脚输出高/低电压;复用模式下,通过其它的片上外设来控制引脚

IO 的最大输出速度
IO 最大输出速度,指的是向 IO 交替写 0 和 1 且不失真的最快速度。
在非理想情况下,电压上升和下降都需要一定时间,那么可以分为三个阶段:上升时间、下降时间、保持时间。这个时间就限制了 IO 的最大输出速度,当保持时间为 0 时,就达到了最大输出速度。
由此,调整上升时间和下降时间就可以调整最大输出速度。
我们使用的芯片提供了三种最大输出速度,低速 2MHz ,中速 10MHz ,高速 50MHz。
在编程时,应该选择满足要求的最低最大输出速度,电压变化过于陡峭时会增加耗电,并且引入 EMI 问题(电磁干扰)。
| 冷知识 人眼的临界闪光频率是 45.8Hz 所以我们完全感受不到 50Hz 的交流灯光