前言
前一陣子接觸到STM32開發(fā),從零開始現(xiàn)學(xué)現(xiàn)用,還好有點(diǎn)Arduino開發(fā)經(jīng)驗(yàn),上手起來不算是太困難,然而瘫想,開發(fā)STM32的IDE或者叫“編輯器”簡直就是上古產(chǎn)物啊!H祢恰! Keil5完全沒有代碼提示况增,連代碼自動對齊都是奢望
跑通幾個Demo后就實(shí)在受不了了赞庶,由于我習(xí)慣使用Idea系的IDE,如:AndroidStudio、PyCharm歧强、WebStorm澜薄、CLion,所以就在找用CLion開發(fā)STM32的方法摊册,然后就找的了稚暉君的《配置CLion用于STM32開發(fā)【優(yōu)雅の嵌入式開發(fā)】》表悬,如獲至寶啊
不過,稚暉君的教程是基于【HAL庫】的丧靡,然而蟆沫,網(wǎng)上的大部分樣例代碼也是基于【標(biāo)準(zhǔn)庫】的,對于我這種小白温治,樣例代碼無比重要饭庞,畢竟也就只會搬磚嘛,【標(biāo)準(zhǔn)庫】基本都是使用的Keil5熬荆,也有一部分人推薦IAR+SourceInsight開發(fā)舟山,都是上古產(chǎn)物,完全無感
好奇的跟著稚暉君的教程試了下卤恳,發(fā)現(xiàn)是通過STM32CubeIDE生成一個基于CMake的基礎(chǔ)項(xiàng)目累盗,既然是CMake項(xiàng)目,那跑【標(biāo)準(zhǔn)庫】不就是改下CMake的事情嗎突琳?作為一個寫過兩年C++開發(fā)的菜鳥若债,改個CMake豈不是易如反掌,所以就有了這篇文章了
配置環(huán)境
詳細(xì)步驟參考稚暉君的文章拆融,寫的很詳細(xì)了蠢琳,我這只列依賴的軟件,STM32CubeMX其實(shí)并不必要镜豹,我們只需要配一份CMake和startup的*.s文件即可傲须,可以通過STM32CubeMX生成,同一塊板子也可以直接copy過來用就好趟脂,生成邏輯參考稚暉君的文章
- MinGW 【https://sourceforge.net/projects/mingw-w64/files/】
- arm-none-eabi-gcc 【https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads】
- OpenOCD 【https://gnutoolchains.com/arm-eabi/openocd/】
這三個是必要軟件泰讽,只需要下壓縮包解壓放到一個的目錄即可,最好是 沒有中文和空格 昔期,配置好Path環(huán)境已卸,保證在cmd下這幾行命令都能正常運(yùn)行
gcc -v
arm-none-eabi-gcc -v
運(yùn)行成功如下:
配置CLion
1. 設(shè)置里配置編譯工具鏈
只需要配置下路徑,其他都不用改
2. 確認(rèn)CMake使用了剛才配置的工具鏈
3. 創(chuàng)建CubeMX工程
4. 將相關(guān)文件Copy到項(xiàng)目里【或者基于STM32CubeMX生成的項(xiàng)目刪除不必要的文件】
如下圖所示镇眷,include&source是我自己的代碼咬最,startup和STM32F103C8Tx_FLASH.ld是從STM32CubeMX生成的項(xiàng)目里copy過來的
5. 修改CMakeLists.txt
修改完CMake后記得刷新下翎嫡,要不然編譯時會出現(xiàn)找不到文件欠动,也可設(shè)置自動刷新
正常刷新后可以看到自動創(chuàng)建了一個運(yùn)行任務(wù),代碼配置沒問題的話可以直接編譯出固件了
6. 配置燒錄
運(yùn)行配置里新建OpenOCD燒錄
選擇好可執(zhí)行程序和板子配置
在OpenOCD里有很多默認(rèn)的配置,我這里用的F103具伍,所以選了一個103的配置
很多文章都建議修改下配置文件翅雏,注釋掉最后一行“reset_config srst_only”,好像不注釋也沒問題
7. 大功告成
最后
放一個我編譯燒錄都OK的項(xiàng)目在github上人芽,供大家參考望几,我是基于STM32F103C8T6的板子移植的,這兩天用CLion開發(fā)STM32簡直不要太爽萤厅,希望大家都能優(yōu)雅的嵌入式開發(fā)
https://github.com/vell001/CLionSTM32Demo