2. 开发环境搭建:Keil MDK安装与破解、STM32CubeMX安装、串口驱动安装、硬件平台介绍(STM32F103C8T6最小系统板)

好,咱们正式开始动手了。

这一章,说白了就是“磨刀”。刀磨得快,砍柴才不费劲。我见过太多初学者,一上来就急着写代码,结果环境没配好,折腾半天连个灯都点不亮。嗯,咱们别走那条弯路。

我会带你一步步把 Keil MDK、STM32CubeMX、串口驱动都装好,再认识一下我们这堂课的主角——STM32F103C8T6 最小系统板。这些东西装好了,后面你写代码、下载、调试,一路畅通。

2.1 Keil MDK 安装与破解

Keil MDK,全称是 Microcontroller Development Kit,ARM 公司出的。咱们做 STM32 开发,它几乎是标配。我个人习惯用 MDK 5.38 版本,稳定,bug 少。

2.1.1 下载与安装

去 Keil 官网下载安装包。注意,别下成 C51 版本了,那个是给 51 单片机用的。咱们要的是 MDK-ARM 版本。

安装过程很简单,一路 Next 就行。但有几点我要提醒你:

  • 安装路径不要有中文。我见过有人装在“D:\软件\Keil_v5”这种路径,结果编译报错,查了半天才发现是中文路径惹的祸。
  • 安装路径不要有空格。比如“Program Files (x86)”这种,虽然 Keil 能识别,但有些第三方插件会出问题。
  • 建议装在 C 盘默认路径。省心,省事。
我的小经验: 安装完成后,先别急着打开。去安装目录下找到 TOOLS.INI 文件,用记事本打开,看看里面有没有乱码。如果有,说明安装包有问题,重新下载一个。

2.1.2 破解(注册)

Keil MDK 是收费软件,不破解的话只能编译 2KB 以下的代码。咱们做项目,2KB 哪够?所以得破解一下。

破解步骤:

  1. 以管理员身份运行 Keil MDK。
  2. 点击菜单栏的 File → License Management
  3. 复制 CID 那一串字符。
  4. 打开注册机(Keygen.exe),把 CID 粘贴进去。
  5. Target 选择 ARM,点击 Generate 生成激活码。
  6. 把激活码复制回 Keil 的 License Management 窗口,点击 Add LIC
注意: 注册机可能会被杀毒软件误报。我建议你暂时关闭杀毒软件,或者把注册机添加到白名单。我曾经有一次没关杀毒,注册机直接被删了,还得重新下载。

破解成功后,你会看到 License Management 里多了一条记录,有效期到 2032 年。嗯,够你用很久了。

2.2 STM32CubeMX 安装

STM32CubeMX 是 ST 官方出的图形化配置工具。用它来配置时钟、引脚、外设,生成初始化代码,效率比手写高太多了。

我个人觉得,CubeMX 最大的好处是让你从繁琐的寄存器配置中解放出来,把精力放在业务逻辑上。

2.2.1 下载与安装

去 ST 官网下载 STM32CubeMX。需要注册一个账号,免费的。下载后双击安装,一路 Next。

安装完成后,第一次打开会提示你安装固件包。咱们用的是 STM32F1 系列,所以需要下载 STM32Cube FW_F1 这个包。

避坑指南: 固件包比较大(几百兆),下载速度可能很慢。我曾经在客户现场,网络不好,下载了一个小时还没完。建议你提前在官网下载好离线包,然后通过 CubeMX 的 Help → Manage embedded software packages → From Local 导入。

2.2.2 快速体验

安装完成后,咱们先跑一个最简单的例子,验证一下环境:

  1. 打开 CubeMX,点击 New Project
  2. 在 Part Number 里输入 STM32F103C8,双击选中。
  3. 在 Pinout & Configuration 界面,找到 PC13 这个引脚,把它设置为 GPIO_Output
  4. 点击 Project Manager,设置项目名称和路径。
  5. 点击 GENERATE CODE,生成代码。

生成成功后,你会看到一个 MDK-ARM 项目文件夹。双击里面的 .uvprojx 文件,就能用 Keil 打开了。

2.3 串口驱动安装

咱们的 STM32F103C8T6 最小系统板,通常通过 USB 转串口模块(比如 CH340、CP2102)和电脑通信。所以,串口驱动是必须装的。

2.3.1 识别你的串口芯片

先看看你的开发板上用的是哪种 USB 转串口芯片。常见的有:

芯片型号 常见于 驱动名称
CH340 便宜的开发板、Arduino Nano 兼容板 CH340 驱动
CP2102 正品 ST 开发板、一些高端板子 CP210x 驱动
FT232 FTDI 原厂模块 FTDI 驱动
怎么判断? 把开发板插到电脑上,打开设备管理器(右键“此电脑” → 管理 → 设备管理器)。如果看到“端口(COM 和 LPT)”下面有一个带黄色感叹号的设备,那就是没装驱动。右键查看属性,就能看到硬件 ID,从而判断芯片型号。

2.3.2 安装驱动

以 CH340 为例:

  1. 去官网下载 CH340 驱动,或者用我提供的驱动包。
  2. 双击安装,一路 Next。
  3. 安装完成后,重新插拔开发板。
  4. 打开设备管理器,你会看到“端口(COM 和 LPT)”下面多了一个 USB-SERIAL CH340 (COMx),x 是端口号。
注意: 如果你用的是 Win10 或 Win11,系统可能会自动安装驱动。但自动安装的驱动有时会出问题,比如波特率不准、通信不稳定。我建议你手动安装官方驱动,更靠谱。

2.4 硬件平台介绍:STM32F103C8T6 最小系统板

好了,软件环境搭好了,咱们来看看硬件。

STM32F103C8T6,这是 STM32 家族里最经典的一款芯片。Cortex-M3 内核,72MHz 主频,64KB Flash,20KB SRAM。说白了,性能足够应付大部分物联网终端设备的需求。

2.4.1 最小系统板长什么样?

你手上拿到的,应该是一块蓝色的、两排排针的板子。上面有:

  • 主芯片:STM32F103C8T6,LQFP48 封装。
  • 晶振:8MHz 主晶振 + 32.768kHz RTC 晶振。
  • USB 接口:Micro USB,用于供电和串口通信。
  • 复位按键:按下复位。
  • BOOT0 跳线:用于选择启动模式。
  • LED:通常 PC13 引脚接了一个 LED,用于点灯实验。

2.4.2 引脚分布

这块板子引出了所有 GPIO 引脚。常用的有:

引脚 功能 备注
PA9 USART1_TX 串口发送
PA10 USART1_RX 串口接收
PA0 ADC1_IN0 模拟输入
PB12 SPI2_NSS SPI 片选
PC13 GPIO 板载 LED
我的建议: 第一次用这块板子,先别急着接线。先把板子通过 USB 线连到电脑,看看电源指示灯亮不亮。如果不亮,检查 USB 线是不是只能充电不能传数据。我遇到过好几次,学生拿了一根充电线来,结果板子死活连不上。

2.4.3 供电方式

这块板子有三种供电方式:

  • USB 供电:通过 Micro USB 口供电,5V 输入,板载 3.3V 稳压芯片。
  • 3.3V 直接供电:从 3.3V 引脚输入,跳过稳压芯片。
  • 5V 引脚供电:从 5V 引脚输入,经过稳压芯片输出 3.3V。

咱们做实验,用 USB 供电最方便。注意,不要同时用两种方式供电,会烧板子的。

2.5 验证环境:点亮第一盏灯

环境搭好了,硬件也认识了。咱们来写第一个程序——点灯。

打开 Keil,新建一个工程,选择 STM32F103C8 芯片。然后写一段最简单的代码:

#include "stm32f10x.h"

int main(void)
{
    // 使能 GPIOC 时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    
    // 配置 PC13 为推挽输出
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    
    while(1)
    {
        // 点亮 LED(PC13 低电平有效)
        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
        // 延时一会儿
        for(uint32_t i = 0; i < 500000; i++);
        // 熄灭 LED
        GPIO_SetBits(GPIOC, GPIO_Pin_13);
        for(uint32_t i = 0; i < 500000; i++);
    }
}

编译,下载,按下复位键。如果看到板子上的 LED 一闪一闪的,恭喜你,环境搭建成功了!

总结一下: 这一章我们做了四件事:装了 Keil MDK 并破解、装了 STM32CubeMX、装了串口驱动、认识了 STM32F103C8T6 最小系统板。最后还点亮了第一盏灯。嗯,万事开头难,但咱们已经迈出了最坚实的一步。

下一章,咱们会深入讲解 GPIO 的原理和用法。到时候,你会发现自己能控制的不只是一盏灯,而是整个世界。