起因
因爲keil的難用…以前開發stm32,我都是使用stm32cube生成了項目文件之後,用clion編輯,然後用keil編譯下載加Debug.說實話,整體感覺還不錯,但總感覺怪怪的.
也曾嘗試過SW4STM32和TrueStudio等,但是用eclipse改的軟件,總是喜歡不起來.
安裝了最新的clion 2019之後,突然發現新建工程時竟然有stm32cubeMX的選項!!! 哇噻噻!!!(狂喜.jpg)
趕緊去找Clion的博客上去翻找,然後發現了這麼一篇博文:
裏面簡略的記錄了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也是可以的:
看,斷點也是可以斷下來的.
重點注意!!!
- Clion必須是2019.1後的版本
- Windows下的8-2018-q4-major版本的arm-none-eabi-gcc貌似有點問題,會導致編譯不通過.詳見:
objcopy.exe: 64-bit address 0x4b4fa300000000 out of range for Intel Hex file 可以考慮2017-q4版本的.
-
Board Config file那裏如果沒有自己的芯片的話…確實挺糾結的,可以像我一樣,找個差不多的,打開看看裏面寫了些啥.
-
使用的Board Config file文件裏記得確認一下stlink的版本號,然後最後
reset_config …
那裏註釋一下. -
Mac下想要Debug的話,需要把默認的LLDB換成GDB.
- emmmm,想起來再說吧.