本教程将引导你配置 CLion+STM32 的软件开发环境,然后创建并运行一个示例工程。本文以 Windows 系统为例说明所需步骤,不过 macOS 和 Linux 系统的配置流程也大体相同。
在开始之前,请参考文末的开发板选择指南。
安装环境
本文用到的软件工具均可以在资料包中下载,下载地址为 https://seafile.h.t123yh.xyz:3/d/f41d309bb5b74de7a61f/。资料包中的文件也附上了相应的官方下载地址,如需下载最新版,请移步对应软件的官方下载。
安装 GCC ARM
STM32 单片机需要使用 ARM 编译器进行编译。下载 ARM 编译器的安装文件(在资料包中下载 arm-gnu-toolchain-<版本号>-mingw-w64-i686-arm-none-eabi.exe
,或从ARM 官网地址下载),打开后一路点击 Next 即可完成安装。在安装完成的页面,请勾选 Add path to environment variable 选项并去除前两个选项(Add path 这个一定要选,否则后续编译项目时会出错),如下图所示。

如果忘记勾选 Add path to environment variable,则可能会在编译时提示找不到 arm-none-eabi-gcc
编译器,此时请将 GCC ARM 的 bin 目录添加进 PATH 中。
安装 CLion
CLion 是我们使用的开发环境。它可以开发电脑上的 C / C++ 程序,也可以开发 STM32 嵌入式程序。
下载 CLion 开发工具(在资料包中下载 CLion-<版本号>.exe
,或在 JetBrains 官网下载),下载后打开,然后一路 Next 安装。安装后,打开 CLion,会出现提示激活许可的信息,如下图所示。JetBrains 对教育用户免费,只需注册一个 JetBrains 账号,然后用 buaa.edu.cn 邮箱进行教育验证即可,具体请访问 https://www.jetbrains.com/shop/eform/students,然后点击 Log In to JetBrains Account 按钮登录。
如果此时不想激活,也可以选择如图绿色框所示的试用选项,注册并登录账号后可试用 30 天。

安装 OpenOCD
OpenOCD 是烧录和调试单片机时使用的工具,实现 CLion 调试器与 ST-LINK 间的对接。下载 XPack OpenOCD 工具(在资料包中找到 xpack-openocd-<版本号>-win32-x64.zip
文件,或在 GitHub Release 页面下载最新版),然后解压到硬盘内(解压所在文件夹的路径不能包含空格和中文,否则会导致 OpenOCD 无法正常运行)。
解压后,需要把 bin 目录移动到 openocd 目录里面,以适应 CLion 的要求。

移动后,openocd 目录下会有 4 个文件夹,如图所示:

安装 STM32CubeMX
STM32CubeMX 的作用是创建单片机项目模版,并将相关的驱动程序复制到项目中。下载 STM32CubeMX 安装文件(在资料包中下载 SetupSTM32CubeMX-<版本号>-Win.exe
,或在官网下载最新版)并打开,一路点击下一步完成安装。
安装 ST-Link 驱动程序
对于 Windows 系统,下载资料包中的 en.stsw-link009.zip
,解压后运行 dpinst_amd64.exe
即可安装。macOS 和 Linux 无需安装驱动。
配置 CLion
安装好 OpenOCD 和 STM32CubeMX 后,在 CLion 主界面中,点击左侧的 Customize 按钮,点击 All Settings 打开设置界面。

在设置界面的 Build, Execution, Deployment 类别中选择 Embedded Development。CLion 应该已经自动找到 STM32CubeMX 的安装路径,无需手动选择。在 OpenOCD Location 里面,请选择刚解压出来 OpenOCD 中的 openocd\bin\openocd.exe。

OpenOCD 和 STM32CubeMX 都配置好后,请点击两个 Test 按钮测试是否配置成功(如果弹出绿色提示,表示正常工作),然后点击 OK 确认。

创建项目
打开 CLion,并点击界面上的 New Project 按钮。在左侧选择“STM32CubeMX”项目类型,在 Location 末尾输入自己的项目名称,然后点击“Create”,如图所示。

第一次创建项目,可能会比较慢,卡在如下界面:

如果等 1 分钟后还是没有反应,可以直接点击 Cancel 取消。
项目创建好后,我们需要通过 STM32CubeMX 来选择单片机型号和配置引脚。单击 CLion 左侧文件列表的 ioc 文件,然后单击 “Open with STM32CubeMX”,即可打开 Cube。

打开 Cube 后,首先需要将单片机修改为自己手里开发板的型号。如果使用 STM32F3Discovery 开发板,则型号是 STM32F303VCT6;如果是 NUCLEO-G474RE 开发板,则型号是 STM32G474RET6。按图中文字说明选择单片机型号。


修改后,在界面中应当能看到新的单片机出现。

由于 STM32CubeMX 的小问题,在修改单片机型号后,整个项目的信息会丢失。我们需要修改项目路径到我们之前创建的项目。假设原本的项目路径是 C:\Users\user\CLionProjects\HelloWorld
(创建项目时指定的路径),请参考以下图片的说明,逐步完成 1-4 步操作。需要注意的是,第 2 步需要准确无误地输入之前 CLion 中创建好的项目名称;第 3 步中请选择项目父目录的路径(即路径中不包含 HelloWorld
项目名称),否则生成的项目位置错误,会导致 CLion 无法识别。

修改完项目路径后,我们还需要修改项目所使用的的外设库。首先点击左边的 Advanced Settings 按钮,然后把 HAL 库修改为 LL 库。后续添加其他外设(如 I2C、GPIO)后,都请在此处把所有外设类型都修改为 LL 库。

修改完后,点击 Generate 按钮生成项目文件。
第一次生成项目时,软件会提示是否下载对应单片机系列的资源包,点击 Yes 即可。根据网络状况,下载可能需要耗费数分钟,耐心等待即可。
点击生成后,系统会提示当前路径已存在,询问是否要覆盖。看到这个提示,说明你前面的路径设置是正确的,点击 Yes 继续操作即可;如果没看到这个提示,说明你前面的路径配置有误,请仔细检查。

生成好项目后,系统提示下一步操作,点击 Close 即可。

系统会提示选择一个开发板的配置文件,如下图所示。这个配置文件包含了开发板相关信息,会被 OpenOCD 烧录程序使用。对于 STM32F3Discovery 开发板,选择 stm32f3discovery.cfg
文件;对于 NUCLEO-G474RE 开发板,选择 st_nucleo_g4.cfg
文件。选好后,点击“Copy to Project & Use”。

如果此步骤点了取消,则没有开发板配置文件,会导致无法烧录程序到单片机中。后续想修改此配置文件,请点击 CLion 右上角下拉框中的 Edit Configuration 选项,在左侧选择 OpenOCD 的配置,并在 Board Configuration 配置项下面就可以修改。点击后面的 “Assist…” 按钮,即可再次选择系统自带的配置文件。
编译并下载
项目创建好后,就可以尝试编译了。请点击 CLion 右上方的小锤子(编译)按钮,即可开始编译。

如果小锤子呈现无法点击状态,则需要手动修改一下可执行文件配置。点击下拉框中的 Edit Configuration 选项,将“Target”修改为项目的 elf 文件,然后点击 OK 即可。

编译成功后,应该能在 CLion 下方的日志窗口中看到 Build Finished
提示。此时我们先将开发板连接到电脑,然后点击右上角的播放(运行)按钮,即可将程序下载到单片机中,并开始运行。如果你使用 STM32F3Discovery 开发板,开发板上有两个 USB 接口,请连接标记有 ST-LINK
的那个接口。

在下载程序时请查看 CLion 下方“Run”窗格中的日志。如果日志中出现 ** Programming Finished **
(如图所示),就代表下载成功。Info : Unable to match requested speed
的信息提示不是错误,可以忽略不管。

开发板选择指南




本作品使用基于以下许可授权:Creative Commons Attribution-ShareAlike 4.0 International License.