Stm32CubeMx + Clion环境搭建

本文最后更新于:1 年前

环境和所需工具

一, 软件环境

1. Windows 10

2. stm32cubemx

3. CLion-2020

4. MinGW

5. arm-none-eabi-gcc

6. openOCD

二,硬件环境

1. 单片机:正点原子STM32F103RCT6

三,工具安装

工具安装部分正常安装就好了,注意安装目录的选择,尽量不要出现中文。

1,STM32CubeMX

直接去官网下在就可以,安装之前需要安装Java运行环境

image-20210421142019511

2,CLion

官网下载2019以后的版本

3,MinGW

Clion是基于CMake来管理项目的,所以首选需要配置好预设的MinGW和CMake环境。

检查是否配置好环境

image-20210421142250730

4,arm-none-eabi-gcc4

需要编译arm架构的程序,所以编译工具使用这个。

检查是否配置好环境

image-20210421142358791

5,openOCD

OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包,Windows版本下从这里下载,下载好解压到一个目录就行。

注意,添加环境变量

6,CLion配置

【重点】

Clion是基于CMake来管理项目的,所以首选我们需要配置好预设的MinGW和CMake环境。

打开File-Settings-Build,Execution,Deployment选项卡,在Toolchains下面添加一个MinGW环境:

image-20210421192108480

打开CMake选项栏查看工具链是否正确

image-20210421192217660

至此Clion环境配置完成,可以创建STM32项目了。

四,CLion使用

1,STM32CubeMX创建工程模板

这里创建一个普通的STM32Cube工程。

image-20210421192506773

接下来由于 OpenOCD 报错 Error: init mode failed (unable to connect to the target)


** OpenOCD init failed **

解决方法:这里是由于PA13和PA14被错误配置导致的。首先修复STM32CubeMX中的SYS设置,在SYS-Debug中选择Serial Wire。然后拉高Boot0和Boot1烧写一个正常固件,然后拉低他们,就能正常烧写了。

所以需要在MX中设置SYS

image-20210421192911551

修改项目名称和Toolchain /IDE

image-20210421193052041

然后创建完成

image-20210421193114717

2,通过CLion导入工程

通过CLion 导入此项目,直接Open打开即可

第一次进入,需要设置对应的单片机设置

image-20210421193243099

根据自己的单片机,选择最接近的型号

image-20210421193312527

然后 Copy to Project & Use

image-20210421193345457

其中的内容原本为

# This is an ST NUCLEO F103RB board with a single STM32F103RBT6 chip.
# http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875

source [find interface/stlink.cfg]

transport select hla_swd

source [find target/stm32f1x.cfg]

reset_config srst_only

修改为

# This is an ST NUCLEO F103RB board with a single STM32F103RBT6 chip.
# http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875

source [find interface/stlink-v2.cfg]

transport select hla_swd

source [find target/stm32f1x.cfg]

# reset_config srst_only 

3,调试

image-20210421193854055

image-20210421193935417

出现** Programming Finished ** 就表示下载到开发板上了,不用管那些警告,只要不报错就OK!