一、前言
上一篇文章介绍了VSCode配置STM32的开发环境,本文将介绍使用CLion配置STM32的开发环境,很多喜欢稚晖君的小伙伴,都知道稚晖君使用的是CLion开发STM32,并且稚晖君的知乎上也有介绍CLion配置STM32的开发环境的文章。我针对我的使用情况,对我遇到的一些问题做一下总结,并且展示解决的办法。本次介绍的也是HAL库开发。B话不多说,开干~
二、软件及环境准备
1、CLion2021.3.3
官网下载地址:CLion: A Cross-Platform IDE for C and C++ by JetBrains,CLion是收费软件,解决办法如下:
a、购买CLion正版授权,199美刀一年,第二年好像就要便宜一些。
b、使用学生证或者在线学籍申请可以免费使用一年
c、找马云清空购物车
2、STM32CubeMX
官网下载地址:STM32CubeMX - STMicroelectronics
3、MinGW
下载地址:https://bit.ly/mingw10
MinGW下载
4、gcc-arm-none-eabi
下载地址:Arm GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer,下载压缩包的即可。
gcc-arm下载
5、OpenOCD
下载地址:Download OpenOCD for Windows
openocd下载
三、环境配置
1、安装软件
安装好CLion和STM32CubeMX
CLion和CubeMX
2、解压工具
解压出MinGW、gcc-arm-none-eabi和OpenOCD放在C盘根目录下,(也可以放在其他地方,我C盘大,所以啥都放在C盘的)
下载完成的工具
解压完成的工具
解压出来文件名比较长,可以修改一下文件名,将名字缩短一点,这里我是修改了文件夹的名字的
3、添加环境变量
将解压出来的MinGW、gcc-arm-none-eabi和OpenOCD文件夹中的bin文件的路径添加进系统的环境变量
首先,在系统搜索框搜索环境变量,然后点击“编辑系统环境变量”
搜索系统环境变量
在“高级”中选择“环境变量”
选择环境变量
选择“Path”,点击“编辑”
编辑路径
点击“新建”,将工具的bin文件路径添加进环境变量中
添加路径
4、测试
在控制台输入g++ -v、openocd -v和make -v出现了版本号,则表示添加成功。
测试工具
四、CLion配置
打开CLion,创建一个工程或者打开一个文件夹,然后点击“file”选择“Setting”
设置
找到“Build,Execution,Deployment”下的“Toolchains”。将Toolset选项选择为MinGW的文件夹,后面的会自动识别;将Debugger设置为gcc-arm下的arm-gcc-none-eabi-gdb.exe。(注意:Debugger可以不用更改)
在CMake处确认工具链是否正确
在Embedded Development栏设置Openocd.exe和STM32CubeMX.exe的位置路径。然后点击Test,弹出绿色气泡则没有问题。
五、CubeMX工程创建和编译
点击file->New->Project,创建一个STM32CubeMX的工程,注意:CubeMX生成工程的文件名必须和CLion中的一样,否则CLion不会更新工程,并且Cube MX会生成一个新的工程文件夹
点击“open with STM32CubeMX”,打开后会发现默认的是STM32030F4Px的芯片
打开CubeMX
默认芯片
我们将它修改为自己使用的芯片,这是我是使用的正点原子探索者的板子,所以我修改芯片类型为STM32F407ZGTx。
芯片替换
中间的配置过程就不在叙述,能来研究CLion开发STM32,我相信Cube MX配置芯片是没有任何问题的;在生成代码之前,项目名字必须和之前CLion中的名字一样,然后IDE选择SW4STM32,最后生成代码。完成后点关闭,CLion中会自动更新
工程生成
回到CLion中,会提示选择一个文件,这个文件是下载时需要用到的,国外的喜欢以板子为例来设置文件,可能会跟我们使用的芯片不符合,所以先点击取消,我们后面再来说。
选择下载文件
CLion中,这三个图标分别为编译、下载和调试
点击绿色的小锤子,则可以编译整个工程
如果有新增加的C/C++文件,则需要在CMakeLists.txt中添加所增加文件的路径
添加编译源文件路径
六、程序下载
下载程序前,可以看到编译和下载之间的选项有个红色的小叉,是因为没有配置下载需要的文件。
调试提示
我们在工程文件夹里面新建一个文件,然后取名stlink.cfg(可以自己定义名字,但是后缀得是.cfg)
新建文件
在文件中写入如图所示代码,第一行是下载器配置文件,这里我使用的是ST-LINK V2,第二行代码是选择调试接口,第三行代码是所使用芯片的配置文件,第四行代码是下载速度。
下载配置代码
提示:stlink-v2.cfg和stm32f4x.cfg在openocd的文件夹中,其路径为:C:OpenOCDshareopenocdscripts
stlink-v2.cfg在interface文件夹中,stm32f4x.cfg在target文件夹中,里面有需要的各种配置文件
配置文件路径
配置文件写好后,需要在CLion中加载;在选项框选择Edit Configurations...
选择编辑
然后在Board config files中添加刚才写的下载配置文件
添加配置文件
最后点击下载按钮,就可以快乐的下载程序了
下载完成
七、遇到过的问题
1、新增cpp源文件和头文件关键字问题
在新增cpp的源文件和头文件后,编译时会提示 No such file or directory的错误。
错误提示
那是因为在加入新的cpp源文件和头文件的,默认选择了 Add to targets。
增加Add
因此,在CMakeLists.txt,会将文件添加在如图所示位置,将其删掉则可编译成功。
删除文件
如果在第一次添加源文件和头文件时,将Add to targets取消掉,文件则不会添加到上图所示的位置。
取消Add
但是,这也会出现另一个问题;在使用C++类时,class关键字会报错。出现这个问题的原因我也不知道。
关键字错误
2、FreeRTOS编译时报错
使用CubeMX生成FreeRTOS操作系统后,点击编译会出现如下图所示的错误
FreeRTOS编译错误
解决办法,在CMakeLists.txt文件中,将如图所示两行代码的注释取消掉即可。注意:CubeMX重新生成代码的时候,这两句会被重新注释上。
取消注释
关于printf函数的重定向,由于本人好像使用得不多(基本没怎么使用),也就没有研究,具体得可以参考稚晖君的文章。本文也是参考了稚晖君的文章,根据自己遇到的问题所作,记录一下。以免后面再回过头来学习时忘记。
相关文章