1. 项目概述:STM32入门经典三件套
在嵌入式开发领域,点亮LED、实现流水灯效果和驱动蜂鸣器被称为"入门三件套"。这三个实验虽然简单,但涵盖了GPIO输出控制、时序管理和外设驱动等嵌入式开发的核心基础。我使用江协科技的STM32开发板完成这组实验时,发现其中有不少值得分享的细节技巧。
江协科技的STM32开发板通常采用STM32F103C8T6这款经典芯片,属于ARM Cortex-M3内核,主频72MHz,具有丰富的GPIO和外设资源。对于初学者而言,这块开发板性价比极高,配套资料完善,是学习STM32的理想选择。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与电路分析
2.1 开发板硬件布局解析
江协科技STM32开发板的LED和蜂鸣器通常采用以下连接方式:
- LED1~LED8:连接在PC0~PC7(具体引脚需查看开发板原理图)
- 蜂鸣器:连接在PB8,通过三极管驱动
重要提示:不同批次的开发板可能存在引脚差异,务必先查阅随板资料中的原理图确认具体连接方式。我曾遇到过同一型号但不同批次的开发板LED连接引脚不同的情况。
2.2 元器件参数选择
LED电路设计需要注意:
- 限流电阻计算:假设LED正向压降2V,STM32 GPIO输出3.3V
- 计算公式:R = (Vcc - Vf) / If
- 典型值:选用1kΩ电阻时,电流约1.3mA(足够点亮普通LED)
蜂鸣器驱动电路:
- 开发板通常采用有源蜂鸣器(内置振荡电路)
- 驱动电流约15-30mA,不能直接由GPIO驱动
- 开发板通过NPN三极管(如S8050)进行电流放大
3. 开发环境搭建
3.1 工具链配置
推荐使用Keil MDK-ARM开发环境:
- 安装Keil uVision5(建议版本5.36以上)
- 安装STM32F1xx Device Family Pack
- 配置J-Link或ST-Link调试器驱动
对于习惯开源工具的用户,也可以选择:
- PlatformIO + VSCode环境
- STM32CubeIDE(ST官方免费工具)
3.2 工程创建步骤
以Keil为例:
- 新建Project,选择STM32F103C8器件
- 配置时钟:HSI 8MHz,PLL到72MHz
- GPIO配置:将LED对应引脚设为Output Push-Pull
- 生成代码框架
经验分享:首次使用Keil时容易漏掉勾选"Use MicroLIB",这会导致printf无法正常工作。建议创建工程时就勾选此项。
4. LED控制实现
4.1 单个LED点亮
基础代码实现:
c复制#include "stm32f10x.h"
void LED_Init(void) {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
