1. 从零开始:STM32开发环境搭建
对于第一次接触STM32的开发者来说,正确的开发环境配置是成功的第一步。我建议从最基础的MDK-ARM(Keil)开始,这是ST官方推荐的开发工具之一。
首先需要下载并安装Keil MDK-ARM软件,当前最新版本是μVision5。安装过程中有几个关键点需要注意:
- 安装路径不要包含中文或特殊字符
- 安装完成后务必安装对应的设备支持包(Device Family Pack)
- 建议同时安装ST-Link驱动,这是最常用的调试工具
提示:Keil的许可证管理比较严格,社区版有32KB代码限制,对于初学者完全够用。如果遇到编译大小限制,可以考虑使用免费的STM32CubeIDE。
安装完成后,我们需要创建一个新项目:
- 点击Project -> New μVision Project
- 选择保存路径和项目名称
- 在设备选择窗口中搜索并选择你的STM32型号(如STM32F103C8)
- 在Manage Run-Time Environment中勾选CMSIS Core和Device Startup
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 理解STM32的GPIO工作原理
在编写LED闪烁代码前,必须理解STM32的GPIO(通用输入输出)工作原理。与常见的51单片机不同,STM32的GPIO功能更加强大但也更复杂。
STM32的每个GPIO端口都有多个寄存器控制:
- GPIOx_MODER:模式寄存器(输入/输出/复用/模拟)
- GPIOx_OTYPER:输出类型寄存器(推挽/开漏)
- GPIOx_OSPEEDR:输出速度寄存器
- GPIOx_PUPDR:上拉/下拉寄存器
- GPIOx_BSRR:置位/复位寄存器
对于简单的LED控制,我们主要关注:
- 将GPIO配置为输出模式(MODER)
- 选择推挽输出(OTYPER)
- 设置适当的输出速度(OSPEEDR)
- 通过BSRR或ODR寄存器控制引脚电平
以常见的STM32F103C8T6(蓝色pill开发板)为例,板载LED通常连接在PC13引脚。这意味着我们需要:
- 使能GPIOC时钟
- 配置PC13为推挽输出
- 通过置位/复位操作控制LED
3. 手写LED闪烁代码详解
现在我们可以开始编写完整的LED闪烁代码
