![55548c8719aeac09619b08a898d9020a.png](https://img-blog.csdnimg.cn/img_convert/55548c8719aeac09619b08a898d9020a.png)
起因
因为keil的难用...以前开发stm32,我都是使用stm32cube生成了项目文件之后,用clion编辑,然后用keil编译下载加Debug.说实话,整体感觉还不错,但总感觉怪怪的.
也曾尝试过SW4STM32和TrueStudio等,但是用eclipse改的软件,总是喜欢不起来.
安装了最新的clion 2019之后,突然发现新建工程时竟然有stm32cubeMX的选项!!! 哇噻噻!!!(狂喜.jpg)
![25797a9086762264e50144f2a69c1de6.png](https://img-blog.csdnimg.cn/img_convert/25797a9086762264e50144f2a69c1de6.png)
赶紧去找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上到这下载:
GNU Toolchain | GNU-RM Downloads – Arm Developerdeveloper.arm.com![356847f2fd4be6f11e3e3ad2290fbc65.png](https://img-blog.csdnimg.cn/img_convert/356847f2fd4be6f11e3e3ad2290fbc65.png)
不过,我安装的时候最新版的( 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下从这下载:
Download OpenOCD for Windowsgnutoolchains.com![53bbb8af37f4a3aafe111d60bbf54fed.png](https://img-blog.csdnimg.cn/img_convert/53bbb8af37f4a3aafe111d60bbf54fed.png)
然后解压就行.
Stlink
mac下:
brew install stlink
windows下:
我没装…应该是之前装keil的时候自动装的,如果没装的话,可以自己到网上找找安装包.
MinGW
win下可能得装MinGW.
配置Clion
打开Clion的设置,在"Build, Execution, Deployment"下有一个"Embedded Development"设置项.
将两个地址填成你自己的,点击Test后没问题就行.
![6ef7309b1c37016edb97cc3aa3de6ad6.png](https://img-blog.csdnimg.cn/img_convert/6ef7309b1c37016edb97cc3aa3de6ad6.png)
创建Demo工程吧~
然后就可以创建一个工程试试啦~
用clion创建新工程的时候选择那个STM32CubeMX ,然后填写好项目要保存的路径,点击Create即可.
![20c8c2d67d282117eb6f2ee824ac2639.png](https://img-blog.csdnimg.cn/img_convert/20c8c2d67d282117eb6f2ee824ac2639.png)
工程创建完成后,clion会自动调用stm32cubeMX创建一个STM32F030F4Px的ioc文件,点Open啥啥啥就能打开它
![cf6963bb20383e88c6a6502e1d2bbc48.png](https://img-blog.csdnimg.cn/img_convert/cf6963bb20383e88c6a6502e1d2bbc48.png)
打开后点下图所示的地方,就能切换芯片
![13559044de0099c88af2e923019462f9.png](https://img-blog.csdnimg.cn/img_convert/13559044de0099c88af2e923019462f9.png)
我这里用我平时常用的芯片Stm32F103RCT6进行演示:
![c91e4e377d7204e45777acc0fdc0eee4.png](https://img-blog.csdnimg.cn/img_convert/c91e4e377d7204e45777acc0fdc0eee4.png)
切换完芯片后,进行自己的芯片设置,这里就是stm32cube的知识了,各位平常用stm32cube的大佬都懂,而且也不是本文的范文,我就不献丑了.
下面是本例的设置:
![218d06e71a96a6dbc6458aae0db950fa.png](https://img-blog.csdnimg.cn/img_convert/218d06e71a96a6dbc6458aae0db950fa.png)
在生成代码前,Project Name要重新填写一下(因为换芯片的过程,其实是cube新建了一个ioc文件),建议填写之前的工程名,这样就可以把之前咱们不想要的那个ioc文件覆盖掉.
然后"Toolchain/IDE"那里,选择SW4STM32.
![f79b7bcb4ba90242c02eee05c1859d04.png](https://img-blog.csdnimg.cn/img_convert/f79b7bcb4ba90242c02eee05c1859d04.png)
然后进行代码生成就好了.
![3055d3568a9954ba8783f82fa8531b11.png](https://img-blog.csdnimg.cn/img_convert/3055d3568a9954ba8783f82fa8531b11.png)
生成完代码后,回到Clion,Clion会对你的工程进行处理,创建CMake文件啥的,然后让你选择Board(开发板)配置.
![4d2f66fea557345667ae396e39ab8f2b.png](https://img-blog.csdnimg.cn/img_convert/4d2f66fea557345667ae396e39ab8f2b.png)
这个玩意的话,如果大家也跟我一样没用过OpenOCD的话,可能也会有点蒙.
我稍微查了查资料,了解了一下,在此大言不惭地说说自己的见解吧,若有不对的,还请大佬们斧正.
简单来说呐,就是OpenOCD对不同芯片啊,开发板啊,有不同的配置文件(Board Config File),你得选一个跟自己芯片或者说开发板符合的设置文件(我也不知道咋回事,这为啥不是按照芯片选,而是按照开发板选…,前两天搞platformIO,也是让按照开发板选…歪果仁咋想的?...2333).
比如我的板子上芯片是stm32f103RCT6,不过我找了半天也没找到哪个开发板是stm32f103RCT6的...不过倒是找到个stm32f103rb的.
![80ac1fc324c0b3c1f2f0648164da6b5b.png](https://img-blog.csdnimg.cn/img_convert/80ac1fc324c0b3c1f2f0648164da6b5b.png)
我打开那个配置文件看了一下,
![74bf35e91bcd52ca45b71a656cc1886d.png](https://img-blog.csdnimg.cn/img_convert/74bf35e91bcd52ca45b71a656cc1886d.png)
第4行是选了连接方式是stlink.
(这里之前是stlink-v2-1,但是我一直下载不成功,后来发现我的下载器是stlink-v2版本的,于是我就将-1删掉了,然后下载就成功了!大家要注意自己的下载器的固件版本呀~)
然后第6行是选择swd通信模式
第8行是选择stm32f1x的配置文件
第10行是选择重启模式,貌似要将其注释起来,不注释起来下载总失败.
就这么四行,怎么看也没有专门给stm32f103rb设置什么,那么我stm32f103rct6用肯定也没什么问题啦.
这个东西也可以在下面这个地方设置:
![fc85b662b32355c6584d207f4f3a02e2.png](https://img-blog.csdnimg.cn/img_convert/fc85b662b32355c6584d207f4f3a02e2.png)
![39336e54b5a9983892c807a23753d955.png](https://img-blog.csdnimg.cn/img_convert/39336e54b5a9983892c807a23753d955.png)
通过点那个画着三个点的按钮,就能找到这些cfg文件,进行修改了.
然后编写一下代码,下面是本例的代码,我只写了这么两行,做个闪烁小灯:
![4fa78799830fad1dd3b65e928c821e98.png](https://img-blog.csdnimg.cn/img_convert/4fa78799830fad1dd3b65e928c821e98.png)
搞完以后,点小锤锤进行编译:
![53a7e7be0a7426e60ec0bac4525cc69a.png](https://img-blog.csdnimg.cn/img_convert/53a7e7be0a7426e60ec0bac4525cc69a.png)
哈哈,编译成功.
然后将stlink连上板子和电脑后,点击小三角就能进行程序的下载:
![e83f91d061102998afd805be67033002.png](https://img-blog.csdnimg.cn/img_convert/e83f91d061102998afd805be67033002.png)
虽然出现的提示信息是红色的,但是只要出现Programming Finished 字样,那就是下载成功了.
![2dd6fa40ebc8d1830d3130124a7e40c8.png](https://img-blog.csdnimg.cn/img_convert/2dd6fa40ebc8d1830d3130124a7e40c8.png)
然后点击小虫虫debug也是可以的:
![956086ec528bb2deeeb3244f5929e8df.png](https://img-blog.csdnimg.cn/img_convert/956086ec528bb2deeeb3244f5929e8df.png)
看,断点也是可以断下来的.
重点注意!!!
- Clion必须是2019.1后的版本
- Windows下的8-2018-q4-major版本的arm-none-eabi-gcc貌似有点问题,会导致编译不通过.详见:
可以考虑2017-q4版本的.
3. Board Config file那里如果没有自己的芯片的话...确实挺纠结的,可以像我一样,找个差不多的,打开看看里面写了些啥.
4. 使用的Board Config file文件里记得确认一下stlink的版本号,然后最后reset_config …
那里注释一下.
5. Mac下想要Debug的话,需要把默认的LLDB换成GDB.
![f18901ad14bca811ca154c6157801c20.png](https://img-blog.csdnimg.cn/img_convert/f18901ad14bca811ca154c6157801c20.png)
6. emmmm,想起来再说吧.