用clion自帶的嵌入式開發功能和stm32cubeMX開發stm32!!!

起因

因爲keil的難用…以前開發stm32,我都是使用stm32cube生成了項目文件之後,用clion編輯,然後用keil編譯下載加Debug.說實話,整體感覺還不錯,但總感覺怪怪的.

也曾嘗試過SW4STM32和TrueStudio等,但是用eclipse改的軟件,總是喜歡不起來.

安裝了最新的clion 2019之後,突然發現新建工程時竟然有stm32cubeMX的選項!!! 哇噻噻!!!(狂喜.jpg)

趕緊去找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,想起來再說吧.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章