什么是STM32?
STM32是意法半导体(ST)推出的32位微控制器系列,基于ARM Cortex-M内核。
STM32系列分类
| 系列 | 内核 | 特点 | 典型应用 |
|---|---|---|---|
| STM32F0 | Cortex-M0 | 入门级、低成本 | 简单控制 |
| STM32F1 | Cortex-M3 | 主流型、性价比高 | 通用应用 |
| STM32F4 | Cortex-M4 | 高性能、带DSP | 音频、图像 |
| STM32F7 | Cortex-M7 | 超高性能 | 高端应用 |
| STM32L系列 | - | 低功耗 | 电池供电 |
STM32命名规则
以STM32F103C8T6为例:
-
STM32: 产品系列
-
F: 类型(F=通用型,L=低功耗,H=高性能)
-
103: 子系列(103=增强型)
-
C: 引脚数(C=48pin,R=64pin,V=100pin,Z=144pin)
-
8: Flash容量(8=64KB,B=128KB,C=256KB,E=512KB)
-
T: 封装(T=LQFP)
-
6: 温度范围(6=-40~85℃)
选型建议
-
初学者推荐: STM32F103C8T6(Blue Pill开发板)
-
资源需求大: STM32F103ZET6或F4系列
-
低功耗应用: STM32L系列
1.2 开发环境搭建
安装Keil MDK-ARM
-
下载Keil MDK
-
访问官网:https://www.keil.com
-
下载MDK-ARM(需要注册账号)
-
-
安装步骤
1. 运行安装程序 2. 选择安装路径(建议默认) 3. 填写用户信息 4. 完成安装 -
安装STM32器件支持包
-
打开Keil
-
Project → Manage → Pack Installer
-
搜索STM32F1
-
点击Install安装
-
安装ST-Link驱动
-
下载ST-Link驱动
-
连接ST-Link到电脑
-
安装驱动程序
验证安装
1. 打开Keil
2. Project → New μVision Project
3. 选择STM32F103C8
4. 添加启动文件
5. 编译测试
1.3 STM32CubeMX使用
什么是STM32CubeMX?
STM32CubeMX是ST官方提供的图形化配置工具,可以:
-
图形化配置引脚
-
配置时钟树
-
生成初始化代码
-
支持多种IDE
安装步骤
-
下载STM32CubeMX(需要注册ST账号)
-
安装Java运行环境(JRE)
-
运行安装程序
-
安装STM32Cube固件包
基本使用流程
-
新建工程
-
File → New Project
-
选择芯片型号
-
-
配置引脚
-
点击引脚选择功能
-
设置输入/输出模式
-
-
配置时钟
-
Clock Configuration标签
-
设置系统时钟频率
-
-
生成代码
-
Project → Generate Code
-
选择IDE类型(Keil)
-
1.4 第一个工程:点亮LED
硬件准备
-
STM32F103C8T6开发板
-
ST-Link下载器
-
LED(板载或外接)
使用CubeMX创建工程
-
选择芯片
- 新建工程,选择STM32F103C8
-
配置LED引脚
-
假设LED接在PC13
-
点击PC13,选择GPIO_Output
-
设置标签:LED
-
-
配置时钟
-
使用外部8MHz晶振
-
系统时钟72MHz
-
-
生成代码
-
Project Settings设置工程名和路径
-
Toolchain选择MDK-ARM
-
Generate Code
-
编写代码
/* main.c */
#include "main.h"
int main(void)
{
/* MCU初始化 */
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
/* 点亮LED(低电平点亮) */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(500); // 延时500ms
/* 熄灭LED */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(500);
}
}
编译下载
-
编译工程
-
点击Build按钮(F7)
-
检查错误
-
-
下载程序
-
连接ST-Link
-
点击Download按钮(F8)
-
-
观察结果
- LED开始闪烁
常见问题
Q: 下载失败?
-
检查ST-Link连接
-
确认驱动已安装
-
检查芯片是否被锁(读保护)
Q: LED不亮?
-
确认LED引脚
-
检查是高电平还是低电平点亮
-
用万用表测量引脚电平
练习题
-
修改程序,让LED以不同的频率闪烁(100ms、200ms、1s)
-
使用两个LED,实现交替闪烁
-
阅读STM32F103数据手册,了解芯片资源
下一章
02-GPIO操作 - 深入学习GPIO的输入输出配置