用clion和stm32cube開發(fā)stm32

提示:本文寫于2019-04-24, 本次發(fā)布為補檔
起因
因為keil的難用...以前開發(fā)stm32,我都是使用stm32cube生成了項目文件之后,用clion編輯,然后用keil編譯下載加Debug.說實話,整體感覺還不錯,但總感覺怪怪的.
也曾嘗試過SW4STM32和TrueStudio等,但是用eclipse改的軟件,總是喜歡不起來.
安裝了最新的clion 2019之后,突然發(fā)現(xiàn)新建工程時竟然有stm32cubeMX的選項!!! 哇噻噻!!!(狂喜.jpg)

趕緊去找Clion的博客上去翻找,然后發(fā)現(xiàn)了這么一篇博文:
CLion 2019.1 EAP: CLion for Embedded Development, Part III
里面簡略的記錄了Clion 2019.1更新后新添加的Embedded功能的使用介紹.
這么好的東西,立馬動手! 于是就有了本文.
注意:本文適用于使用過clion和stm32cubeMX的讀者.
建議將本文閱讀一遍后,再照著開始搞,尤其是后面的重點注意!!!部分要先看一下.
安裝環(huán)境
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 Developer

不過,我安裝的時候最新版的( 8-2018-q4-major)在windows下貌似有點問題,我試了試,好像是這樣,建議下7-2017-q4-major試試.
安裝好以后記得要將安裝目錄下的bin文件夾添加到環(huán)境變量,
然后不管是mac還是windows都可以在命令行里用以下語句測試(mac下記得重啟命令行):
arm-none-eabi-gcc -v
如果有信息輸出,那就是裝好了.
Openocd
這是用來下載程序和調試程序的程序
mac下用以下語句安裝:
brew install open-ocd
win下從這下載:
Download OpenOCD for Windows

然后解壓就行.
Stlink
mac下:
brew install stlink
windows下:
我沒裝…應該是之前裝keil的時候自動裝的,如果沒裝的話,可以自己到網(wǎng)上找找安裝包.
MinGW
win下可能得裝MinGW.
配置Clion
打開Clion的設置,在"Build, Execution, Deployment"下有一個"Embedded Development"設置項.
將兩個地址填成你自己的,點擊Test后沒問題就行.

創(chuàng)建Demo工程吧~
然后就可以創(chuàng)建一個工程試試啦~
用clion創(chuàng)建新工程的時候選擇那個STM32CubeMX ,然后填寫好項目要保存的路徑,點擊Create即可.

工程創(chuàng)建完成后,clion會自動調用stm32cubeMX創(chuàng)建一個STM32F030F4Px的ioc文件,點Open啥啥啥就能打開它

打開后點下圖所示的地方,就能切換芯片

我這里用我平時常用的芯片Stm32F103RCT6進行演示:

切換完芯片后,進行自己的芯片設置,這里就是stm32cube的知識了,各位平常用stm32cube的大佬都懂,而且也不是本文的范文,我就不獻丑了.
下面是本例的設置:

在生成代碼前,Project Name要重新填寫一下(因為換芯片的過程,其實是cube新建了一個ioc文件),建議填寫之前的工程名,這樣就可以把之前咱們不想要的那個ioc文件覆蓋掉.
然后"Toolchain/IDE"那里,選擇SW4STM32.

然后進行代碼生成就好了.

生成完代碼后,回到Clion,Clion會對你的工程進行處理,創(chuàng)建CMake文件啥的,然后讓你選擇Board(開發(fā)板)配置.

這個玩意的話,如果大家也跟我一樣沒用過OpenOCD的話,可能也會有點蒙.
我稍微查了查資料,了解了一下,在此大言不慚地說說自己的見解吧,若有不對的,還請大佬們斧正.
簡單來說吶,就是OpenOCD對不同芯片啊,開發(fā)板啊,有不同的配置文件(Board Config File),你得選一個跟自己芯片或者說開發(fā)板符合的設置文件(我也不知道咋回事,這為啥不是按照芯片選,而是按照開發(fā)板選…,前兩天搞platformIO,也是讓按照開發(fā)板選…歪果仁咋想的?...2333).
比如我的板子上芯片是stm32f103RCT6,不過我找了半天也沒找到哪個開發(fā)板是stm32f103RCT6的...不過倒是找到個stm32f103rb的.

我打開那個配置文件看了一下,

第4行是選了連接方式是stlink.
(這里之前是stlink-v2-1,但是我一直下載不成功,后來發(fā)現(xiàn)我的下載器是stlink-v2版本的,于是我就將-1刪掉了,然后下載就成功了!大家要注意自己的下載器的固件版本呀~)
然后第6行是選擇swd通信模式
第8行是選擇stm32f1x的配置文件
第10行是選擇重啟模式,貌似要將其注釋起來,不注釋起來下載總失敗.
就這么四行,怎么看也沒有專門給stm32f103rb設置什么,那么我stm32f103rct6用肯定也沒什么問題啦.
這個東西也可以在下面這個地方設置:


通過點那個畫著三個點的按鈕,就能找到這些cfg文件,進行修改了.
然后編寫一下代碼,下面是本例的代碼,我只寫了這么兩行,做個閃爍小燈:

搞完以后,點小錘錘進行編譯:

哈哈,編譯成功.
然后將stlink連上板子和電腦后,點擊小三角就能進行程序的下載:

雖然出現(xiàn)的提示信息是紅色的,但是只要出現(xiàn)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 (https://bugs.launchpad.net/gcc-arm-embedded/+bug/1810274) 可以考慮2017-q4版本的.
3. Board Config file那里如果沒有自己的芯片的話...確實挺糾結的,可以像我一樣,找個差不多的,打開看看里面寫了些啥.
4. 使用的Board Config file文件里記得確認一下stlink的版本號,然后最后reset_config …
那里注釋一下.
5. Mac下想要Debug的話,需要把默認的LLDB換成GDB.
6. emmmm,想起來再說吧.
如果您感覺本文不錯,對您有些許的幫助,跪求您點個贊Orz.