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 盘默认路径。省心,省事。
2.1.2 破解(注册)
Keil MDK 是收费软件,不破解的话只能编译 2KB 以下的代码。咱们做项目,2KB 哪够?所以得破解一下。
破解步骤:
- 以管理员身份运行 Keil MDK。
- 点击菜单栏的 File → License Management。
- 复制 CID 那一串字符。
- 打开注册机(Keygen.exe),把 CID 粘贴进去。
- Target 选择 ARM,点击 Generate 生成激活码。
- 把激活码复制回 Keil 的 License Management 窗口,点击 Add LIC。
破解成功后,你会看到 License Management 里多了一条记录,有效期到 2032 年。嗯,够你用很久了。
2.2 STM32CubeMX 安装
STM32CubeMX 是 ST 官方出的图形化配置工具。用它来配置时钟、引脚、外设,生成初始化代码,效率比手写高太多了。
我个人觉得,CubeMX 最大的好处是让你从繁琐的寄存器配置中解放出来,把精力放在业务逻辑上。
2.2.1 下载与安装
去 ST 官网下载 STM32CubeMX。需要注册一个账号,免费的。下载后双击安装,一路 Next。
安装完成后,第一次打开会提示你安装固件包。咱们用的是 STM32F1 系列,所以需要下载 STM32Cube FW_F1 这个包。
2.2.2 快速体验
安装完成后,咱们先跑一个最简单的例子,验证一下环境:
- 打开 CubeMX,点击 New Project。
- 在 Part Number 里输入 STM32F103C8,双击选中。
- 在 Pinout & Configuration 界面,找到 PC13 这个引脚,把它设置为 GPIO_Output。
- 点击 Project Manager,设置项目名称和路径。
- 点击 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 驱动 |
2.3.2 安装驱动
以 CH340 为例:
- 去官网下载 CH340 驱动,或者用我提供的驱动包。
- 双击安装,一路 Next。
- 安装完成后,重新插拔开发板。
- 打开设备管理器,你会看到“端口(COM 和 LPT)”下面多了一个 USB-SERIAL CH340 (COMx),x 是端口号。
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 |
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 一闪一闪的,恭喜你,环境搭建成功了!
下一章,咱们会深入讲解 GPIO 的原理和用法。到时候,你会发现自己能控制的不只是一盏灯,而是整个世界。