posts/stm32-dev-environment.md
STM32从零开始:开发环境搭建与第一个工程
STM32从零开始:开发环境搭建与第一个工程
很多初学者卡在第一步:环境装了一整天,还是点不亮第一盏 LED。这篇文章把环境搭建和第一个工程的完整流程走一遍。
#一、需要安装的软件
| 软件 | 作用 | 备注 |
|---|---|---|
| Keil MDK | 编译 + 调试 | 主流 IDE,也可用 GCC + VSCode |
| STM32CubeMX | 图形化配置外设 | 生成初始化代码 |
| ST-Link 驱动 | 下载程序 | 或用 CH340 串口下载 |
| 串口助手 | 串口调试 | 任意一款即可 |
#二、用 CubeMX 创建工程
打开 STM32CubeMX,按以下步骤操作:
- File → New Project,在 MCU 选择器里输入芯片型号(例如 STM32F103C8T6);
- 在左侧
System Core → RCC,把 HSE 设为Crystal/Ceramic Resonator; - 在
System Core → SYS,Debug 设为Serial Wire(启用 SWD 调试); - 找到 PC13 引脚,选择
GPIO_Output(板载 LED); - 左侧
Project Manager页,Toolchain 选MDK-ARM; - 点击 GENERATE CODE,生成后打开 Keil 工程。
#三、第一个程序:点亮 LED
在 main.c 的 main() 里加入:
cHAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
编译下载后,板载 LED 就亮了。如果想让它闪烁,用 HAL 延时:
cwhile (1) {
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}
#四、常见坑与解决
#1. 编译报错找不到器件
Keil 里没有对应的 Device Pack。打开 Pack Installer,搜索你的芯片型号安装即可。
#2. 下载时报错 No ST-LINK detected
- 检查驱动是否安装;
- 检查 ST-Link 与板子的接线(SWDIO / SWCLK / GND / 3.3V);
- 在 Keil 的
Options → Debug里确认选择了 ST-Link 并点击 Settings 能看到目标芯片。
#3. 下载成功但程序不运行
多半是 BOOT0 引脚 拉高了。把 BOOT0 接 GND 再复位一次。
#4. 串口打印乱码
- 确认波特率与代码中
HAL_UART_Transmit配置一致; - 检查晶振配置:CubeMX 里 HSE 频率要和板子实际晶振一致(常见 8MHz)。
#五、进阶建议
点亮 LED 之后,建议依次挑战:按键中断、串口收发、定时器 PWM、I2C 驱动 OLED。每一步都是后面做项目的基石。