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

CLionJetbrains公司开发的一款现代化的C/C++ IDE具有十分智能的代码补全重构等功能

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

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

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

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

环境安装

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

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

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

STM32CubeMX需要电脑有Java运行环境如果没有Java环境需要先安装JavaJRE

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 ConfigurationHCLK输入你需要的系统频率并回车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-TESTProject Location中填D:\Projects\目的就是保证最终的Toolchain Folder Location为你的CLion工程的位置

然后设置ToolchainSW4STM32即可只有这个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目录下根据自己的实际情况选用最合适的