使用CLion替代传统的MDK(Keil)工具链进行STM32嵌入式开发

CLion是Jetbrains公司开发的一款现代化的C/C++ IDE,具有十分智能的代码补全、重构等功能。

要替代传统的MDK开发工具环境,要解决两个问题。一个是将C/C++以及汇编代码编译成二进制,另一个是芯片的仿真问题(即将编译好的二进制烧录进STM32的芯片以及调试功能的实现)。

前者我们可通过ARM提供的gcc-arm-none-eabi工具链解决,后者我们可通过开源的OpenOCD解决。

OpenOCD(Open On-Chip Debugger)是一个开源的片上调试器,旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD的功能需要调试仿真器来辅助完成,调试仿真器是一个提供调试目标电信号的小型硬件单元。常用的有JLink、STLink等。

环境安装

需要的程序如下(点击文字即可跳转下载网页)

OpenOCD下来是压缩包,解压后并将其bin目录添加进PATH环境变量。

安装程序的直接运行安装即可。

STM32CubeMX需要电脑有Java运行环境,如果没有Java环境需要先安装Java(JRE)。

Package是在安装STM32CubeMX后,通过STM32CubeMX程序自带的下载程序下载即可。打开如图菜单,找到所需芯片的最新的Pack,点击下载。

Snipaste_2020-10-04_13-33-13.png

配置工程

首先新建工程,选择STM32CubeMX工程,点击完成后显示如图界面。默认是STM32F0的芯片,我们需要打开CubeMX更换芯片并配置引脚。点击Open with STM32CubeMX即可打开。

Snipaste_2020-10-04_12-59-14.png

点击箭头位置,进入MCU选择界面,输入你选用的芯片型号,在结果中点击芯片,然后点击开始项目。

Snipaste_2020-10-04_13-00-46.png

Snipaste_2020-10-04_13-02-54.png

之后工程将变为你选择的芯片,直接点击芯片的引脚即可修改引脚对应的外设功能。

Snipaste_2020-10-04_13-05-19.png

接下来是配置时钟树,点击Clock Configuration,在HCLK输入你需要的系统频率并回车,STM32CubeMX将自动搜索可用的时钟方案。

Snipaste_2020-10-04_13-18-24.png

搜索过程中可能提示要求更换时钟源,点击确定即可。

Snipaste_2020-10-04_13-18-31.png

如图我这里STM32F4芯片,配置的168Mhz,回车后自动搜索的方案如下。

Snipaste_2020-10-04_13-18-38.png

之后点击Project Manager,设置项目信息。

在Project Name中填入项目路径的文件夹名,在Project Location中填项目的上层路径。

比如我的CLion路径是D:\Projects\RTU-STM32F4-TEST,则在Project Name中填RTU-STM32F4-TEST,在Project Location中填D:\Projects\。目的就是保证最终的Toolchain Folder Location为你的CLion工程的位置。

然后设置Toolchain为SW4STM32即可,只有这个Toolchain才是基于CLion可以识别的CMake工程创建的。

Snipaste_2020-10-04_13-15-40.png

点击Generate Code,出现如图提示则说明路径设置是正确的,因为我们需要替换CLion默认创建的STM32F0的项目文件。点击确定。

Snipaste_2020-10-04_13-23-59.png

等待进度条走完,出现如图对话框点击关闭即可。

Snipaste_2020-10-04_13-25-06.png

此时应该已经可以正常开发、编译了、

配置 OpenOCD

OpenOCD是一个通用的调试器,我们需要为其设置芯片的参数,以便让OpenOCD知道如何调试我们的芯片。

点击Edit Configurations

Snipaste_2020-10-04_13-54-58.png

显示如图对话框,选择All targets,然后选择项目名.elf的执行文件,点击Assist,在预置的配置文件选择stm32f4discovery.cfg然后点击确定。

Snipaste_2020-10-04_13-58-01.png

之后项目的根目录会多出一个stm32f4discovery.cfg文件,找到其中的source [find target/stm32f4x.cfg]一行,根据自己选用的芯片进行修改。所有的配置文件都在openocd的安装目录的scripts目录下,根据自己的实际情况选用最合适的。