一、系列定位与整体规划

在正式开始前,先明确这个系列的核心目标:“用最落地的方式,让你从‘不会’到‘精通’”。整个系列会分为 5 个阶段,循序渐进:

  1. 基础入门阶段(第 1-20 篇):硬件认知、环境搭建、GPIO、时钟、中断等核心基础;
  2. 外设实战阶段(第 21-50 篇):UART、SPI、I2C、ADC、定时器、PWM 等常用外设的原理与实战;
  3. 进阶技能阶段(第 51-70 篇):RTOS(FreeRTOS)、DMA、低功耗、BootLoader 等进阶技术;
  4. 综合项目阶段(第 71-90 篇):温湿度监测、电机控制、物联网网关、小型仪器等完整项目开发;
  5. 优化与拓展阶段(第 91-100 篇):代码优化、调试技巧、STM32F103 与其他芯片的联动(如 ESP8266、OLED)。

每篇文章都会包含 “原理讲解 + 实操步骤 + 代码分析 + 常见问题”,确保你不仅 “会做”,更 “懂为什么这么做”。

二、STM32F103:为什么它是入门首选?

在开始实操前,我们先搞懂:STM32F103 到底是什么?为什么几乎所有嵌入式入门教程都绕不开它?

1. STM32F103 的核心参数

STM32F103 是 ST(意法半导体)推出的基于ARM Cortex-M3 内核的 32 位 MCU,主打 “高性价比” 和 “易上手”,核心参数如下(以最常用的STM32F103C8T6为例):

  • 内核:ARM Cortex-M3,最高主频 72MHz;
  • 存储:64KB Flash(程序存储)、20KB RAM(数据临时存储);
  • 引脚:48 脚(LQFP48 封装,面包板可直接焊接);
  • 外设:2 个 UART、2 个 SPI、1 个 I2C、3 个定时器、1 个 ADC(12 位)、37 个 GPIO;
  • 供电:2.0V-3.6V(可直接用 USB 5V 转 3.3V 供电)。

2. 为什么选它入门?

  • 生态成熟:资料、教程、开源项目多到 “用不完”,遇到问题能快速找到解决方案;
  • 成本低:核心板(如 STM32F103C8T6)价格仅 10-20 元,搭配下载器总预算不超过 50 元;
  • 难度适中:既比 8 位 MCU(如 51 单片机)功能强,又比高性能 STM32(如 F4、H7 系列)简单,刚好适合入门;
  • 应用广:工业控制、智能家居、消费电子等领域都有它的身影,学会后能快速落地项目。

三、学习 STM32F103 的软硬件准备

工欲善其事,必先利其器。这一部分我们直接搞定 “需要买什么” 和 “需要装什么”。

1. 硬件清单(新手入门版)

硬件名称 作用 推荐型号 / 规格 参考价格
STM32F103 核心板 核心运算单元 STM32F103C8T6(48 脚) 10-20 元
ST-Link V2 下载器 给核心板烧录程序 + 调试 原版 / 兼容版均可 15-30 元
LED 灯 + 限流电阻 实操 “点亮 LED” 用 LED(任意颜色)、1kΩ 电阻 5 元(100 个)
杜邦线 连接硬件 公对公、公对母各 10 根 5 元
面包板(可选) 临时搭建电路,避免焊接 400 孔基础款 10 元
万用表(可选) 排查接线、电压问题 基础款数字万用表 30-50 元

注意:新手建议直接买 “STM32F103C8T6+ST-Link” 套装,价格更划算(约 30 元),还会送杜邦线和 LED。

2. 软件安装(官方免费工具)

我们用 ST 官方推荐的STM32CubeIDE(集成开发环境),它包含了 “代码生成 + 编译 + 烧录 + 调试” 全流程,无需额外安装其他工具,对新手最友好。

安装步骤(以 Windows 系统为例):
  1. 下载 STM32CubeIDE进入 ST 官网下载页(点击直达),选择 “Windows” 版本(如stm32cubeide_1.14.0_win64.exe),需要注册 ST 账号(免费);

  2. 安装 STM32CubeIDE双击安装包,一路 “Next”,注意:

    • 安装路径建议默认(或自定义到非 C 盘,如D:\STM32CubeIDE);
    • 勾选 “Add STM32CubeIDE to PATH”(方便后续调用);
    • 等待安装完成(约 5-10 分钟,会自动安装 Java 运行环境和驱动);
  3. 安装 ST-Link 驱动连接 ST-Link 到电脑 USB 口,Windows 会自动搜索驱动,若失败:

    • 打开 STM32CubeIDE,点击 “Help”→“Install New Software”;
    • 在 “Work with” 中选择 “STM32CubeIDE Updates”,勾选 “ST-Link Debugger Support”,安装后重启电脑,驱动即可生效。
  4. 验证安装打开 STM32CubeIDE,若能正常进入主界面,且连接 ST-Link 后,电脑设备管理器中 “端口” 显示 “ST-Link Debug”,则软件安装成功。

四、实操:点亮你的第一盏 LED(STM32 入门第一步)

学会 “点亮 LED”,相当于嵌入式的 “Hello World”—— 这一步能帮你打通 “写代码→烧录→看到效果” 的全流程,建立第一个成就感。

1. 硬件连接(核心板 + LED + 电阻)

我们用 STM32 的PA5 引脚控制 LED(PA5 是核心板上的常用引脚,也可自选其他 GPIO 引脚),接线方式如下:

  • STM32 核心板的3.3V引脚 → 面包板的 “+” 极;
  • STM32 核心板的GND引脚 → 面包板的 “-” 极;
  • LED 的长脚(正极) → 1kΩ 电阻的一端;
  • 1kΩ 电阻的另一端 → STM32 核心板的PA5引脚;
  • LED 的短脚(负极) → 面包板的 “-” 极(GND)。

接线图简化STM32 PA5 → 1kΩ电阻 → LED正极 → LED负极 → GND(若没有面包板,可直接用杜邦线连接:PA5→电阻→LED 正极,LED 负极→GND)

2. 用 STM32CubeIDE 生成代码并修改

STM32CubeIDE 的核心优势是 “图形化配置”—— 通过鼠标点击就能配置引脚和外设,无需手写底层代码,新手也能快速上手。

步骤 1:新建 STM32 工程
  1. 打开 STM32CubeIDE,点击 “File”→“New”→“STM32 Project”;
  2. 在 “Board Selector” 中,搜索 “STM32F103C8T6”,选择 “STM32F103C8T6”(或对应核心板型号),点击 “Next”;
  3. 输入项目名称(如 “LED_Blink”),选择项目保存路径(非中文),点击 “Finish”;
  4. 弹出 “Initialize all peripherals with their default Mode?”(是否初始化所有外设为默认模式),选择 “Yes”。
步骤 2:配置 GPIO 引脚(PA5 为输出模式)
  1. 进入 “Pinout & Configuration” 界面(左侧菜单栏);
  2. 在右侧 “MCU Pinout” 视图中,找到 “PA5” 引脚,鼠标点击它,在弹出的下拉菜单中选择 “GPIO_Output”(设置为输出模式);
  3. 点击左侧 “Configuration”→“GPIO”→“PA5”,配置引脚参数:
    • GPIO mode:Output Push Pull(推挽输出,可输出高 / 低电平);
    • GPIO Pull-up/Pull-down:No pull-up and no pull-down(无上下拉,因为 LED 有外部电阻);
    • Maximum output speed:Low(低速模式,LED 不需要高速切换);
  4. 点击界面上方的 “Generate Code” 按钮(齿轮图标),弹出提示框点击 “Yes”,等待代码生成(约 10 秒)。
步骤 3:修改代码,实现 LED 闪烁

代码生成后,会自动打开main.c文件,我们只需要在main函数的while(1)循环中添加 “点亮 LED→延时→熄灭 LED→延时” 的逻辑。

4. 验证效果

烧录完成后,你会看到 LED 开始每隔 500ms 闪烁一次(亮 500ms,灭 500ms)—— 恭喜你!你已经成功写出了第一份 STM32 程序,完成了入门的第一步。

常见问题排查(若 LED 不亮):

五、第 1 篇总结与下一篇预告

总结

这一篇我们完成了 3 件核心事:

  1. 找到main.c中的main函数,定位到while (1)循环:

    /* USER CODE BEGIN WHILE */
    while (1)
    {
      /* USER CODE END WHILE */
    
      /* USER CODE BEGIN 3 */
      
      // 1. 点亮LED:PA5引脚输出高电平(GPIO_PIN_SET表示高电平)
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
      // 2. 延时500ms(HAL库自带延时函数,单位:毫秒)
      HAL_Delay(500);
      // 3. 熄灭LED:PA5引脚输出低电平(GPIO_PIN_RESET表示低电平)
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
      // 4. 延时500ms
      HAL_Delay(500);
      
    }
    /* USER CODE END 3 */

  2. 代码解释:

    • HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState):控制 GPIO 引脚电平的函数;
      • GPIOx:引脚所在的 GPIO 端口(如 GPIOA、GPIOB);
      • GPIO_Pin:引脚编号(如 GPIO_PIN_5);
      • PinState:电平状态(GPIO_PIN_SET = 高电平,GPIO_PIN_RESET = 低电平);
    • HAL_Delay(ms):延时函数,参数为毫秒数(如 500 表示延时 500ms)。
  3. 3. 烧录程序到 STM32 核心板

  4. 连接硬件:用 ST-Link 的 SWD 接口(4 根线:SWCLK、SWDIO、GND、3.3V)连接 STM32 核心板的 SWD 引脚(核心板上会标注 “SWCLK”“SWDIO”“GND”“3.3V”),然后将 ST-Link 的 USB 口连接电脑;
  5. 配置烧录参数
    • 点击 STM32CubeIDE 上方的 “Run”→“Run Configurations”;
    • 在左侧选择 “STM32 Cortex-M C/C++ Application”,右键选择 “New”;
    • 在 “Main” 标签页,“Application” 选择项目编译后的LED_Blink.elf文件(默认路径:项目文件夹/Debug/LED_Blink.elf);
    • 在 “Debugger” 标签页,“Debug Probe” 选择 “ST-Link (OpenOCD)”,点击 “Apply”→“Close”;
  6. 烧录程序
    • 点击上方工具栏的 “Run” 按钮(绿色三角形),或按快捷键 “Ctrl+F11”;
    • 此时会显示 “Programming Flash”(烧录进度),约 1-2 秒后显示 “Launching successful”,表示烧录完成。
  7. 接线问题:检查 LED 正负极是否接反、PA5 引脚是否接对、GND 是否连通;
  8. 电阻问题:确认限流电阻是 1kΩ 左右(若电阻太大,LED 亮度低;若没有电阻,可能烧坏引脚);
  9. 明确了系列规划,知道后续会学什么;
  10. 认识了 STM32F103,准备了入门所需的软硬件;
  11. 实操点亮了 LED,打通了 “代码→烧录→效果” 的全流程。
  12. 烧录问题:检查 ST-Link 是否连接正常、烧录配置是否正确(是否选择了 “ST-Link”);
  13. 代码问题:确认HAL_GPIO_WritePin的参数是否正确(如 GPIOA、GPIO_PIN_5 是否写对)。
  14. 下一篇预告

    第 2 篇我们会深入讲解GPIO(通用输入输出口) —— 这是 STM32 最基础也最常用的外设。我们会学习:GPIO 的工作模式(输入 / 输出 / 复用 / 模拟)、上下拉电阻的作用、如何用 GPIO 读取按键状态(输入模式实操),以及 GPIO 的底层寄存器原理(帮你理解 HAL 库背后的逻辑)。

    如果你在实操中遇到任何问题,欢迎在评论区留言,我们一起解决!也别忘了点赞收藏,跟着系列持续学习~

    编辑分享

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐