文章目录
为什么是CLion
做嵌入式开发的人对STM32
这个平台应该都是非常熟悉的,在国内尤其流行,很多产品里面都是基于这个平台做的方案。多数人在开发STM32
的时候用的都是Keil
这个老牌IDE,很大一部分原因是因为大多数人最初是从51单片机学习过来的,51就是基于Keil
去开发的,然后迁移到STM32
的时候也就沿用下来了。
稳定一点还是建议,keil5+vscode+vscode的
keil插件
安装
所需工具、软件
- CLion ------- 主角
- STM32CubeMX ------- ST官方力推的自动化配置和代码生成工具
- OpenOCD ------ 调试工具
- gcc-arm-none-eabi -------- 交叉编译工具链
- MinGW -------- 你可以认为这是一个大礼包
- 可能还包括你所使用的调试器的驱动,之前安装过就行。
MinGW
简介
MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。
另有可用于产生32位及64位Windows可执行文件的MinGW-w64项目,是从原本MinGW产生的分支。如今已经独立发展。
MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。
安装
Clion需要使用MinGW环境来配置工具链,安装方法如下:
首先去MinGW主页下载最新版本的MinGW: Minimalist GNU for Windows,这是MinGW的安装器:
![](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210821225940422.png)
先把 Basic Setup
里面的组件全部勾选
选择需要安装的组件,右键选择 Mark for Installation
,之后选择 Installation -> Apply Changes
。
![](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210821230445225.jpg)
然后等待安装(安装挺慢的,建议先去吃个饭)
![image-20210821230658394](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210821230658394.png)
安装完成(安装不了的建议翻墙(选美国)然后换个时间段再试试)
![image-20210822102331560](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210822102331560.png)
添加环境变量
![image-20210821232154098](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210821232154098.png)
设置好后重启电脑
最后,输入 gcc -v
测试
![image-20210822102511794](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210822102511794.png)
MinGW使用
测试编译
测试文件test.c,代码如下
#include <stdio.h>
void main()
{
printf("Hello World!");
}
编译test
编译命令如下:
gcc test.c -o test
输出结果为:test.exe
执行
输入test回车,结果如下:
OpenOCD
OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包,Windows版本下从这里下载,下载好解压到一个目录就行,后面会在Clion中链接这个目录:
![](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/image-20210821225746792.jpg)
在CLion中配置OpenOCD的方法:
![](https://raw.githubusercontent.com/Nepqiu/gallery/master/img/122.jpg)
arm-none-eabi-gcc
Windows到这里下载:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads,选择ZIP压缩包形式的:
解压到一个文件夹,并把安装目录下的bin文件夹添加到环境变量:
![](https://i-blog.csdnimg.cn/blog_migrate/2ca9f47c97263aee74018283051104c4.jpeg)
然后重启电脑使得环境变量生效之后可以在命令行里用以下语句测试:
arm-none-eabi-gcc -v
如果有信息输出,那就是装好了。
![](https://i-blog.csdnimg.cn/blog_migrate/362478148f894b8239995047ad7cc905.png)
看看调试会不会出问题,出问题就
![image-20210928162133861](https://i-blog.csdnimg.cn/blog_migrate/4d6d56d91f6bc6c8d274792bc0ec2f45.png)
cubemx
java
⚠️JAVA选择旧一点的版本安装!!!不要更新!!!
版本选择安装:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
CubeMX是基于Java开发的软件,所以需要先安装Java运行环境,下载地址在这里
![image-20210822181941851](https://i-blog.csdnimg.cn/blog_migrate/41736c901bd6c3452da00933df5dbdf6.png)
CubeMX
- 下载地址: 官网下载地址
安装 cubemx ,如果未安装 Java 环境,将会出现报错
![3.2_0](https://i-blog.csdnimg.cn/blog_migrate/1a8e071f4dd437886361bb44189816cd.png)
安装完成后最后修改一下stm32HAL库的安装位置(默认是在C盘的)
![image-20210822182511755](https://i-blog.csdnimg.cn/blog_migrate/e7ea87f22b5d0e685251912a1bf89434.png)
![image-20210822182533862](https://i-blog.csdnimg.cn/blog_migrate/e7682e2901b30cc68e8e45fb0c454180.png)
最后就可以选择相应的型号下载了
![image-20210822182647062](https://i-blog.csdnimg.cn/blog_migrate/34a9cade378a15397ae7571b8246ff37.png)
.cfg
文件配置
# 设置调试器为jlink
source [find interface/jlink.cfg]
# 设置调试器所用接口为SWD
transport select swd
# 定义Flash大小为64K
set FLASH_SIZE 0X10000
# 设置芯片 在 D:\OpenOCD-20210729-0.11.0\share\openocd\scripts\target 目录下选择对应的板子
source [find target/stm32f1x.cfg]
# download speed = 10MHz
# adapter speed 10000
/***************************************************************************************/
# 设置调试器为st-link
source [find interface/stlink.cfg]
# 设置调试器所用接口为 hla_swd
transport select hla_swd
# 定义Flash大小为64K
set FLASH_SIZE 0X10000
# 设置芯片 在 D:\OpenOCD-20210729-0.11.0\share\openocd\scripts\target 目录下选择对应的板子
source [find target/stm32f3x.cfg]
# download speed = 10MHz
# adapter speed 10000
![image-20210824011255096](https://i-blog.csdnimg.cn/blog_migrate/e27fbedee8a6fb15c30bba23976c25ac.png)
![image-20210824004547201](https://i-blog.csdnimg.cn/blog_migrate/a4ea2d4330acb27f02343a61df7012ea.png)
![image-20210824004746838](https://i-blog.csdnimg.cn/blog_migrate/190ff6668ac60acba7b09efbb577e55c.png)
也可以添加变量查看
![image-20210824005109329](https://i-blog.csdnimg.cn/blog_migrate/9a9d0dc3e36be6d16863a32432f7690a.png)
clion 安装
直接安装在官网安装对应的版本,然后根据教程来破解就好了,clion是自带有中文插件的,
破解也是以插件+破解码的形式来进行
clion 配置
![image-20210904135642638](https://i-blog.csdnimg.cn/blog_migrate/12402a673b2ba01203fcad8d1200db8c.png)
![image-20210904135738087](https://i-blog.csdnimg.cn/blog_migrate/a6c9d9e8a244139aa7d077cc5eaeb48e.jpeg)
Git 配置
![image-20210907221743913](https://i-blog.csdnimg.cn/blog_migrate/df29e1caff374ef72a44c08be01cf079.jpeg)
![image-20210907222037939](https://i-blog.csdnimg.cn/blog_migrate/e82ff89d7826e4e009dc05db254e7253.png)
要执行什么操纵直接右键对应的文件就可以了,(虽然我还是觉得提交的话命令行更舒服)
其他问题
编译错误问题
- 如果移动了工程文件夹的话,最好打开.ioc文件重新Generate一下再编译,可以解决很多错误。
- 遇到任何CMake相关的报错,一般是由于缓存没有更新引起的,可以在CLion中选
Tools-CMake-Reset Cache and Reload Project
即可解决。
printf
重定向问题
添加文件/目录
![image-20210907221618464](https://i-blog.csdnimg.cn/blog_migrate/0bb43adf867bfa458325b47cd049c2e6.png)
# 增加C文件时需要使用指令
file(GLOB_RECURSE SOURCES "startup/*.*" "Drivers/*.*" "Core/*.*" "app/encoder/Src/*.*" "base_drivers/Src/*.*" "algorithm/*.*" "bsp/Src/*.*")
# 增加 . h头文件时需要使用以下指令
include_directories(SYSTEM algorithm app/ app/encoder/Inc base_drivers/Inc bsp/Inc)
下载问题
直接搞的话,大概率是下载不了的,因为 openOCD 只把 Jlink仿真器 当作普通的USB设备来使用,不使用Jlink自带的仿真器驱动程序,如果已安装了 Jlink 仿真器驱动程序,openOCD是识别不到的 。
所以要进行一些操作,具体看这里。
⚠️注意
-
上图这种情况选 “Continue(继续)”
-
Java也是,版本不要太新!!!!!!!!
-
路径一定不要有中文!!!!!!!!!!
📚参考文章
最后
由于不明原因,第一次成功了,但是后面隔了两三周再试试,发现不行了,,,
最后的最后
在退了java的版本和cubemx()的版本
![image-20210906225107466](https://i-blog.csdnimg.cn/blog_migrate/67d526a099abc46e4a2285a7f7c69866.png)
发现还是不行,但是!
第二天又试了一下,更新了clion的版本,更新到最新版,2021.1.13再上一个版本应该是
又可以了!
最后的最后的最后
更新了cubemx,
![image-20210911170029523](https://i-blog.csdnimg.cn/blog_migrate/f77e25110061a99822c37aa584bdc2ee.png)
依然可以使用clion