历史上的今天
返回首页

历史上的今天

今天是:2026年03月23日(星期一)

正在发生

2023年03月23日 | CLion配置STM32开发环境

2023-03-23 来源:zhihu

一、前言

  上一篇文章介绍了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

  下载地址: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函数的重定向,由于本人好像使用得不多(基本没怎么使用),也就没有研究,具体得可以参考稚晖君的文章。本文也是参考了稚晖君的文章,根据自己遇到的问题所作,记录一下。以免后面再回过头来学习时忘记。


推荐阅读

史海拾趣

Fascomp公司的发展小趣事

为了进一步提升技术实力和市场竞争力,Fascomp积极寻求与国际知名企业的技术合作。通过与多家跨国公司的联合研发项目,Fascomp成功吸收和借鉴了国际先进的技术和管理经验。此外,公司还积极拓展海外市场,产品远销欧美、亚洲等多个国家和地区,进一步提升了公司的国际化水平。

Digital公司的发展小趣事

DIALIGHT公司一直专注于工业LED照明领域的发展。他们深入了解工业空间照明的需求和挑战,设计了一系列专为工业应用而定制的LED照明产品。这些产品不仅易于安装和维护,而且能在恶劣的环境下持续使用。此外,DIALIGHT还提供集成系统解决方案,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。通过不断创新和优质服务,DIALIGHT在工业LED照明领域赢得了广泛的认可和信赖。

华宇创公司的发展小趣事

随着市场的不断发展,华宇创意识到单一产品无法满足日益增长的市场需求。于是,公司加大了对研发的投入,积极引进高端人才,与国内外知名科研机构建立合作关系。经过不懈努力,华宇创成功研发出一系列智能电子设备,包括智能手表、智能眼镜、智能家居控制器等。这些新产品的推出不仅丰富了公司的产品线,也进一步提升了华宇创的市场竞争力。

CST Master Electronic Co Ltd公司的发展小趣事

在环保和可持续发展的呼声日益高涨的背景下,CST Master积极响应国家号召,将绿色发展理念融入公司的经营战略中。公司加大在环保技术研发和绿色生产方面的投入,推出了一系列节能环保的电子产品。同时,公司还加强了对废旧电子产品的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实的基础。

请注意,以上故事均基于一般电子公司的发展情况虚构而成,并不代表CST Master Electronic Co Ltd公司的真实发展历程。如需了解该公司的具体发展情况,建议查阅相关资料或咨询公司相关人员。

Future Designs, Inc. (FDI)公司的发展小趣事

在快速发展的同时,FDI也注重可持续发展。他们致力于环境保护和社会责任,积极采用环保材料和节能技术,减少生产过程中的资源消耗和污染排放。同时,FDI还关注员工的发展和福利,为员工提供良好的工作环境和培训机会,激发员工的创造力和创新精神。展望未来,FDI将继续秉承“创新、服务、质量、诚信”的核心理念,不断推动技术进步和产品升级,为电子行业的发展贡献更多的力量。

DIOO公司的发展小趣事

随着市场竞争的加剧和消费者需求的不断变化,DIOO公司意识到品牌重塑和多元化发展的重要性。在近几年中,DIOO公司加强了品牌宣传和推广力度,通过推出新的品牌形象和广告活动,提高了品牌知名度和美誉度。同时,DIOO公司还积极拓展产品线,推出了包括智能家居、智能穿戴设备、游戏硬件等在内的多元化产品系列,进一步满足了消费者的多样化需求。

问答坊 | AI 解惑

扫盲书籍下载:医疗仪器原理

医疗仪器原理  王成    上海交通大学出版社  2008-05-01 目录: 1 绪论 ----------------8   1.1 医疗仪器 ----------------8   1.2 医疗仪器的构成 ----------------10   1.3 ...…

查看全部问答>

防盗报警联动视频监控系统应用解析

报警服务业是商业化的安全防范服务行业,是防盗报警服务运营商在提供防盗报警产品基础上延伸的一系列安保服务。目前,报警服务业在日本、英国、美国、澳大利亚等发达国家,已经成为一种较为普及的安全服务行业,据不完全统计,约20%的家庭和企业在 ...…

查看全部问答>

版主,请教一下SWIM烧录问题

failed to download application: error: swim prog error [42004]: memory write error 这个问题怎么解决了?…

查看全部问答>

stm32f测试小程序

希望对新手有用! 使用内部晶振,PC口进行闪灯! stm32f.JPG (51.25 KB) 下载次数:13 2010-9-28 16:41 …

查看全部问答>

请问各位大虾我用4M得主频怎么才能在纯IO口上获得1M频率脉冲?

请问各位大虾我用4M得主频怎么才能在纯IO口上获得1M频率脉冲? 假如系统频率是4M那么一般的一条指令需要多长时间?…

查看全部问答>

jlink连接问题

 用stm32f103vet这款最小板,用jlink  connect时总是提示  count not find supported cpu core on jtag chain bad jtag。。。。,现在程序都下部进去,是什么出现问题??…

查看全部问答>

郭天祥十天学习51单片机仿真板

霍尔要插在郭天祥上得那个脚??我要搞数脉冲…

查看全部问答>

PIC开发工具

PIC开发工具——EasyPIC6开发系统  EasyPIC6是一种开发系统,支持超过160种 8- ,14- ,18 - ,20 - ,28 -和40引脚PIC微控制器。高速的板载USB2.0编程器包含简化的驱动安装。MikroICD是一种硬件工具,可测试和调试PIC微控制器程序设计。EasyP ...…

查看全部问答>

LM3S9B92访问MCX314AL 时序问题--附代码参考

#define  GPIO_DL_BASE                 GPIO_PORTH_BASE          //低8位数据线 #define  GPIO_DH_BASE             ...…

查看全部问答>