2. 开发环境搭建:Keil/IAR/STM32CubeIDE 安装、芯片包配置、工程模板创建
好,咱们正式开始动手了。这一章我带你搭开发环境。
说实话,我见过太多人一上来就写代码,结果编译报错半天找不到原因——最后发现是工具链没配好。嗯,磨刀不误砍柴工,咱们先把刀磨利索。
2.1 三大IDE,我该怎么选?
目前主流的STM32开发环境就三个:Keil MDK、IAR EWARM、STM32CubeIDE。我三个都用过,说说我的感受。
| IDE | 优点 | 缺点 | 适合场景 |
|---|---|---|---|
| Keil MDK | 上手快、资料多、调试器兼容性好 | 代码量大了编译慢、收费 | 中小项目、快速原型 |
| IAR EWARM | 编译优化强、代码密度高 | 界面老派、License管理麻烦 | 对代码大小有要求的项目 |
| STM32CubeIDE | 免费、集成CubeMX、持续更新 | 吃内存、Eclipse底子有些人用不惯 | 新项目、长期维护 |
我个人习惯用STM32CubeIDE做新项目。为什么?免费且官方维护,省心。但如果你公司统一用Keil,那也别纠结,跟着团队走。
2.2 Keil MDK 安装与芯片包配置
先讲Keil,毕竟用户基数最大。
2.2.1 安装步骤
- 去ARM官网下载MDK-Arm安装包(注意版本,我建议用5.36以上)
- 双击安装,一路Next。路径别带中文,切记
- 安装完成后打开Keil,会提示注册。你懂的,自己想办法
2.2.2 芯片包安装
Keil本身不带STM32的支持包,你得手动装。说白了,就是告诉Keil:"我要开发STM32F4,你给我把对应的头文件、启动文件、链接脚本都准备好。"
操作很简单:
- 打开Keil,点击菜单栏的
Pack Installer图标 - 在左侧找到你的芯片型号,比如STM32F407VG
- 点击右侧的
Install按钮 - 等进度条跑完,搞定
你想想看,如果这一步漏了,你写代码时连 #include "stm32f4xx.h" 都会报错。我刚开始学的时候就犯过这个傻。
2.3 IAR EWARM 安装与配置
IAR的安装比Keil稍微麻烦一点,但也不复杂。
2.3.1 安装流程
- 从IAR官网下载EWARM安装包(建议用8.50以上版本)
- 运行安装程序,选择安装路径(还是那句话,别带中文)
- 安装过程中会提示选择License类型,选"License Server"或"Local License"
- 安装完成后,打开IAR,导入License文件
2.3.2 芯片支持包
IAR的芯片支持包是集成在安装包里的。但如果你用的是比较新的芯片(比如STM32H7系列),可能需要单独下载设备描述文件(.ddf)。
操作路径:Tools -> Options -> Device Description,然后导入你下载的.ddf文件。
2.4 STM32CubeIDE 安装与工程模板创建
这个是我最推荐的,尤其适合咱们这个课程。为什么?因为它集成了CubeMX,配置外设就像点菜一样简单。
2.4.1 安装步骤
- 去ST官网下载STM32CubeIDE(目前最新是1.15.0)
- 双击安装,选择安装路径(对,还是别带中文)
- 安装过程中会提示选择工作空间(Workspace)路径,我建议单独建一个文件夹,比如
D:\STM32_Workspace - 安装完成后,启动IDE,它会自动检测你的J-Link或ST-Link调试器
2.4.2 创建工程模板
咱们直接创建一个电机控制的工程模板,后面所有章节都基于这个模板来扩展。
操作步骤:
- 点击
File -> New -> STM32 Project - 在芯片选择界面,输入你的芯片型号,比如STM32F407VGT6
- 点击Next,给工程起个名字,比如
MotorControl_Template - 在"Targeted Project Type"里选
Empty(空工程),不要选带示例的 - 点击Finish,IDE会自动生成初始代码
生成后,你会看到左侧的Project Explorer里有一堆文件。别慌,核心就这几个:
Core/Src/main.c—— 主函数入口Core/Inc/main.h—— 主头文件STM32F4xx_HAL_Driver—— HAL库驱动
我习惯在工程里再加几个文件夹,方便管理:
MotorControl_Template/
├── Core/
│ ├── Src/
│ │ ├── main.c
│ │ ├── motor_control.c // 电机控制算法
│ │ └── sensor.c // 传感器读取
│ └── Inc/
│ ├── main.h
│ ├── motor_control.h
│ └── sensor.h
├── Drivers/
│ └── STM32F4xx_HAL_Driver/
└── .cproject
2.5 调试器配置
环境搭好了,还得能下载调试。咱们用ST-LINK,因为STM32开发板基本都自带。
在STM32CubeIDE里配置:
- 右键工程 ->
Debug As -> Debug Configurations - 在左侧选择
STM32 Cortex-M C/C++ Application - 在
Debugger选项卡里,选择ST-LINK (OpenOCD) - 点击
Apply,再点Debug
如果一切正常,你会看到代码停在main函数的入口处。这时候你可以单步执行、设置断点、查看变量值。
J-Link。我曾经帮一个学员远程调试,他折腾了两小时连不上,最后发现是Debugger选错了。嗯,这种低级错误,犯过一次就记住了。
2.6 验证环境是否正常
环境搭完,咱们写个最简单的程序验证一下:
#include "main.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
// 点亮板载LED(以STM32F4Discovery为例)
__HAL_RCC_GPIOG_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
while(1)
{
HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_13);
HAL_Delay(500);
}
}
编译下载后,如果板子上的LED开始闪烁,恭喜你,环境搭建成功了!
说实话,这一步虽然简单,但很有成就感。我第一次点亮LED时,感觉就像打开了新世界的大门。后面咱们要做的电机控制,本质上也是让芯片按照我们的意愿去驱动硬件,只不过从LED变成了电机。
好,环境搭好了,下一章咱们开始真正接触电机控制的核心——PWM和定时器。准备好了吗?