用clion自带的嵌入式开发功能和stm32cubeMX开发stm32!!!

2023年的补充说明:

时至今日,已经无需按照此方法进行设置。仅需:
1. 安装STM32CubeIDE
2. 将STM32CubeIDE安装目录下的gcc的bin目录添加到path环境变量 

添加Path环境变量

3. 使用STM32CubeIDE新建工程,并生成代码,然后直接用CLion 打开工程所在文件夹,就可以自动生成CMakelist文件,直接用Clion开始写代码!
4. 并且编译器是调用的STM32CubeIDE的

另外!!! 在下最近制作了一系列的STM32教程,感觉还不错,有兴趣的小伙伴可以来B站看看~

点此去看STM32教程~


起因

因为keil的难用…以前开发stm32,我都是使用stm32cube生成了项目文件之后,用clion编辑,然后用keil编译下载加Debug.说实话,整体感觉还不错,但总感觉怪怪的.

也曾尝试过SW4STM32和TrueStudio等,但是用eclipse改的软件,总是喜欢不起来.

安装了最新的clion 2019之后,突然发现新建工程时竟然有stm32cubeMX的选项!!! 哇噻噻!!!(狂喜.jpg)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nDuC70ly-1678718684889)(null)]

赶紧去找Clion的博客上去翻找,然后发现了这么一篇博文:

CLion 2019.1 EAP: CLion for Embedded Development, Part III

里面简略的记录了Clion 2019.1更新后新添加的Embedded功能的使用介绍.

这么好的东西,立马动手! 于是就有了本文.

注意:本文适用于使用过clion和stm32cubeMX的读者.

​ 建议将本文阅读一遍后,再照着开始搞,尤其是后面的**重点注意!!!**部分要先看一下.

安装环境

clion

当然,最新版的clion,你得安装一个~

Stm32cubeMX

这么好用的东西,必须得搞一个啊,怎么装我就不介绍了.

arm-none-eabi-gcc

这货是用来编译stm32程序的交叉编译工具链,在mac上的安装方式是:

brew tap ArmMbed/homebrew-formulae
brew install arm-none-eabi-gcc

(安装好后,测试前记得重启命令行)

在windows上到这下载:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads

不过,我安装的时候最新版的( 8-2018-q4-major)在windows下貌似有点问题,我试了试,好像是这样,建议下7-2017-q4-major试试.

安装好以后记得要将安装目录下的bin文件夹添加到环境变量,

然后不管是mac还是windows都可以在命令行里用以下语句测试(mac下记得重启命令行):

arm-none-eabi-gcc -v

如果有信息输出,那就是装好了.

Openocd

这是用来下载程序和调试程序的程序

mac下用以下语句安装:

brew install open-ocd

win下从这下载:http://gnutoolchains.com/arm-eabi/openocd/

然后解压就行.

Stlink

mac下:

brew install stlink

windows下:

我没装…应该是之前装keil的时候自动装的,如果没装的话,可以自己到网上找找安装包.

MinGW

win下可能得装MinGW.

配置Clion

打开Clion的设置,在"Build, Execution, Deployment"下有一个"Embedded Development"设置项.

将两个地址填成你自己的,点击Test后没问题就行.

创建Demo工程吧~

然后就可以创建一个工程试试啦~

用clion创建新工程的时候选择那个STM32CubeMX ,然后填写好项目要保存的路径,点击Create即可.

工程创建完成后,clion会自动调用stm32cubeMX创建一个STM32F030F4Px的ioc文件,点Open啥啥啥就能打开它

打开后点下图所示的地方,就能切换芯片

我这里用我平时常用的芯片Stm32F103RCT6进行演示:

切换完芯片后,进行自己的芯片设置,这里就是stm32cube的知识了,各位平常用stm32cube的大佬都懂,而且也不是本文的范文,我就不献丑了.

下面是本例的设置:

在生成代码前,Project Name要重新填写一下(因为换芯片的过程,其实是cube新建了一个ioc文件),建议填写之前的工程名,这样就可以把之前咱们不想要的那个ioc文件覆盖掉.

然后"Toolchain/IDE"那里,选择SW4STM32.

然后进行代码生成就好了.

生成完代码后,回到Clion,Clion会对你的工程进行处理,创建CMake文件啥的,然后让你选择Board(开发板)配置.

这个玩意的话,如果大家也跟我一样没用过OpenOCD的话,可能也会有点蒙.

我稍微查了查资料,了解了一下,在此大言不惭地说说自己的见解吧,若有不对的,还请大佬们斧正.

简单来说呐,就是OpenOCD对不同芯片啊,开发板啊,有不同的配置文件(Board Config File),你得选一个跟自己芯片或者说开发板符合的设置文件(我也不知道咋回事,这为啥不是按照芯片选,而是按照开发板选…,前两天搞platformIO,也是让按照开发板选…歪果仁咋想的?..2333).

比如我的板子上芯片是stm32f103RCT6,不过我找了半天也没找到哪个开发板是stm32f103RCT6的…不过倒是找到个stm32f103rb的.

我打开那个配置文件看了一下,

第4行是选了连接方式是stlink.

(这里之前是stlink-v2-1,但是我一直下载不成功,后来发现我的下载器是stlink-v2版本的,于是我就将-1删掉了,然后下载就成功了!大家要注意自己的下载器的固件版本呀~)

然后第6行是选择swd通信模式

第8行是选择stm32f1x的配置文件

第10行是选择重启模式,貌似要将其注释起来,不注释起来下载总失败.

就这么四行,怎么看也没有专门给stm32f103rb设置什么,那么我stm32f103rct6用肯定也没什么问题啦.

这个东西也可以在下面这个地方设置:

通过点那个画着三个点的按钮,就能找到这些cfg文件,进行修改了.

然后编写一下代码,下面是本例的代码,我只写了这么两行,做个闪烁小灯:

搞完以后,点小锤锤进行编译:

哈哈,编译成功.

然后将stlink连上板子和电脑后,点击小三角就能进行程序的下载:

虽然出现的提示信息是红色的,但是只要出现Programming Finished 字样,那就是下载成功了.

然后点击小虫虫debug也是可以的:

看,断点也是可以断下来的.

重点注意!!!

  1. Clion必须是2019.1后的版本
  2. Windows下的8-2018-q4-major版本的arm-none-eabi-gcc貌似有点问题,会导致编译不通过.详见:

objcopy.exe: 64-bit address 0x4b4fa300000000 out of range for Intel Hex file 可以考虑2017-q4版本的.

  1. Board Config file那里如果没有自己的芯片的话…确实挺纠结的,可以像我一样,找个差不多的,打开看看里面写了些啥.

  2. 使用的Board Config file文件里记得确认一下stlink的版本号,然后最后reset_config …那里注释一下.

  3. Mac下想要Debug的话,需要把默认的LLDB换成GDB.

  1. emmmm,想起来再说吧.
### CLion 嵌入式开发环境配置 Mac 操作指南 #### 准备工作 为了在Mac上成功配置CLion用于嵌入式开发,需准备如下工具资源: - **CLion** 软件:这是JetBrains公司出品的一款跨平台IDE,适用于多种编程语言。 - **STM32CubeMX** 工具:用于初始化硬件配置并生成启动代码框架[^1]。 #### 安装必要的编译链支持工具 对于macOS用户来说,安装`gcc-arm-none-eabi`可以通过Homebrew来简化过程。打开终端输入命令完成安装: ```bash brew install gcc-arm-embedded ``` 同样地,通过Homebrew可以方便地获取OpenOCD调试支持程序: ```bash brew install open-ocd ``` #### 设置CLion插件与外部工具路径 进入CLion偏好设置界面,在“Build, Execution, Deployment -> Toolchains”选项卡下新增一条记录指定GCC ARM Embedded Toolchain的位置。通常情况下,默认安装位置即为正确路径[^4]。 接着前往“Build, Execution, Deployment -> Embedded Development”,在此处定义OpenOCD可执行文件的具体地址以及STM32CubeMX生成项目的模板目录[^2]。 #### 创建新项目并与STM32CubeMX集成 利用STM32CubeMX设计好目标单片机的外设参数后导出工程至本地磁盘。随后返回到CLion内选择导入现有源码作为新的CMake项目处理方式加载该文件夹下的所有内容[^5]。 #### 编写简单的测试案例验证环境有效性 尝试编写一段基础代码实现LED闪烁功能以检验整个流程是否顺畅无误。下面给出了一段针对STM32F1系列MCU控制GPIO端口输出高低电平切换的例子: ```c #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); //使能GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); while (true){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); //翻转PA5引脚状态 HAL_Delay(500); //延时半秒 } } ```
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值