2、开发环境搭建:Keil MDK安装与破解、STM32CubeMX配置、驱动安装与调试器连接
说实话,做嵌入式开发这么多年,我见过太多新手在环境搭建这一步就卡住了。明明代码逻辑没问题,结果编译报错、下载失败、调试器连不上……最后发现是环境没配好。这一章,我就带你把这些坑一个个填平。
2.1 Keil MDK的安装与激活
Keil MDK,说白了就是ARM内核单片机最主流的IDE。我最早用Keil还是大学那会儿,装了个盗版,结果编译到一半弹窗提示过期,气得我差点砸电脑。后来工作了才知道,其实官方有免费版,只是有代码大小限制——对于学习来说,完全够用。
2.1.1 下载与安装
去Keil官网下载MDK-Arm版本。注意别下成C51了,那是给51单片机用的。安装过程很简单,一路Next就行。但我建议你注意两点:
- 安装路径不要有中文。我见过有人装在“D:\开发工具\Keil_v5”这种路径,结果编译某些库时报错,折腾半天才发现是中文空格惹的祸。
- 安装完成后先别急着打开。先以管理员身份运行一次,否则后面装驱动可能会权限不足。
2.1.2 激活(破解)步骤
嗯,这里要说明一下。Keil MDK是收费软件,但官方提供了评估版。如果你只是学习,用评估版完全没问题。但如果你想解除代码大小限制,就需要激活。
激活步骤其实很简单:
- 以管理员身份运行Keil MDK
- 点击 File → License Management
- 复制CID码(一串16进制数字)
- 运行注册机(keygen.exe),把CID粘贴进去
- 选择Target为ARM,点击Generate生成激活码
- 把激活码复制回Keil的License Management窗口,点击Add LIC
激活成功后,你会看到License Management里多了一条记录,有效期一般是到2032年。够你用到退休了(笑)。
2.2 STM32CubeMX配置
STM32CubeMX是ST官方出的图形化配置工具。你想想看,以前配置时钟树、GPIO、外设,全得看数据手册手动写寄存器,一个不小心就写错了。现在好了,点点鼠标就能生成初始化代码。
我个人习惯是先装CubeMX,再装Keil。因为CubeMX生成的代码可以直接用Keil打开,省去手动配置工程的麻烦。
2.2.1 安装CubeMX
去ST官网下载STM32CubeMX,安装过程同样简单。但要注意:
- 需要Java运行环境。CubeMX是基于Java的,如果你的电脑没有JRE,安装程序会自动下载。但我建议你手动装一个JDK 11以上版本,稳定一些。
- 安装路径同样不要有中文。这个我已经强调过很多次了,你记住就行。
2.2.2 配置一个最小系统
打开CubeMX,点击“New Project”,选择你的芯片型号。比如我们常用的STM32F103C8T6,在搜索框输入“STM32F103C8”就能找到。
配置步骤大致如下:
- 配置时钟源:选择HSE(外部高速晶振)或HSI(内部振荡器)。我一般选HSE,精度更高。
- 配置时钟树:把HCLK拉到最大(比如72MHz)。CubeMX会自动计算分频系数,如果配置不合理它会标红提示。
- 配置GPIO:比如把PA0设为输出,PC13设为输入。点一下引脚,选择功能就行。
- 配置调试接口:在“System Core → SYS”里,把Debug设为Serial Wire。这一步很重要,否则你下载程序后调试器可能连不上。
2.2.3 生成代码
配置完成后,点击“Project Manager”标签:
- Project Name:给你的工程起个名字,比如“LED_Blink”
- Project Location:选择存放路径
- Toolchain / IDE:选择MDK-ARM V5
- Firmware Package:选择对应的HAL库版本。我建议选最新稳定版,但别选太新的,有些新版本可能有bug。
点击“GENERATE CODE”,CubeMX就会生成一个完整的Keil工程。你直接用Keil打开就能编译下载了。
2.3 驱动安装与调试器连接
环境搭好了,代码也生成了,接下来就是下载调试。这一步看似简单,但很多人栽在这里。
2.3.1 ST-Link驱动安装
ST-Link是ST官方调试器,买开发板时一般都会送一个。插上USB后,电脑应该能识别到。如果没识别,说明驱动没装好。
驱动安装方法:
- 去ST官网下载“ST-Link USB driver”
- 运行安装程序,一路Next
- 插上ST-Link,打开设备管理器,看看“通用串行总线设备”里有没有“ST-Link Debug”
如果设备管理器里显示黄色感叹号,说明驱动没装对。我建议你卸载重装,或者换个USB口试试。有些劣质USB Hub会导致识别失败。
2.3.2 调试器连接与配置
硬件连接很简单:
- ST-Link的SWD接口接开发板的SWDIO和SWCLK
- GND接GND
- 3.3V接3.3V(如果开发板需要供电)
然后在Keil里配置调试器:
- 点击 Project → Options for Target
- 选择 Debug 标签
- 在右侧下拉框选择 ST-Link Debugger
- 点击 Settings,确认SWD模式,速度选1MHz(别选太高,容易不稳定)
配置好后,点击“Download”按钮,程序就能烧录进去了。如果提示“No target connected”,检查一下接线和驱动。
2.4 验证环境是否搭建成功
环境搭好了,我们来验证一下。写一个最简单的LED闪烁程序:
#include "main.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
HAL_Delay(500);
}
}
编译通过,下载到开发板,LED开始闪烁——恭喜你,环境搭建成功了!
如果LED没亮,别慌。先检查硬件:LED是不是接在PA0上?正负极对不对?再检查软件:GPIO配置是不是对的?时钟有没有配好?
嗯,这一章的内容就到这里。下一章我们开始讲GPIO的深入应用,到时候我会分享一些我在项目中用到的实用技巧。