Ubuntu20.04 下使用STM32CubeMX+Vscode+st-flash 生成&編寫&燒錄 stm32代碼の備忘錄

為了統(tǒng)一日后科研工作的環(huán)境,準(zhǔn)備將自己的STM32開發(fā)環(huán)境轉(zhuǎn)移到Ubuntu上。
經(jīng)過折騰終于完成了在STM32上點燈的偉大壯舉。(高舉雙臂歡呼)

0. 本文說明
????- 本文假設(shè)讀者對于STM32單片機有一定了解,至少了解STM32的時鐘樹(知道有這個玩意兒)和GPIO;
????- 本文介紹了在已有環(huán)境后如何完生成和燒錄代碼的步驟,不包含搭建環(huán)境的過程,可以先找別的文章,搭建好必要的環(huán)境后再來看。

1. CubeMX 生成Makefile文件
????假設(shè)你已經(jīng)安裝好了STM32CubeMX,并且安裝了對應(yīng)的手頭的芯片的庫如圖1.1所示。(我用的是STM32F407ZGT6)

????下一步開始一個工程,我選的是Home界面的 Start My project from MCU 如圖1.2 。

?下一步選擇對應(yīng)芯片后開始工程,別的都可以不管先。選好后可以star一下常用芯片,便于日后接著用。
(stm32! 啟動!)

左側(cè)System Core 里面可以配置系統(tǒng)時鐘,并開啟需要的外設(shè)。我手頭上的板子有外部的時鐘原可以用,這里將其打開,如圖1.4所示。

Gpio直接從可視化芯片上勾選就行,我這里是PF9和PF10 。

然后在左側(cè)對GPIO進行設(shè)置,根據(jù)個人需要選擇GPIO的配置情況。我這里使用推挽輸出+上拉電阻。PF9、PF10 在硬件上對應(yīng)兩個LED的負(fù)極,程序控制兩個引腳輸出低電平則燈亮。如圖1.6所示,程序?qū)懗鰜碓诔跏紶顟B(tài)燈就是亮的。

Clock Configuration項目(這位更是重量級)
沒必要搞清楚什么鎖相環(huán)什么倍頻什么分頻.. 至少不開別的外設(shè)的情況下主頻率168M調(diào)出來就行(x)
我這邊用的是正點原子的板子,我查了下對應(yīng)例程里面關(guān)于系統(tǒng)時鐘配置的相關(guān)文件,進行了如下設(shè)置(圖1.7)。
只是點個燈的話,這些設(shè)置關(guān)系不大。如果開定時器、通訊就不一樣了。

下一步,在Project Manager中選擇輸出目錄。最重要的是選擇Toolchain/IDE的時候選擇Makefile,因為之后是使用make進行編譯的。

右上Generate Code,之后可以關(guān)閉CubeMX了。

2.?Vscode 相關(guān)配置
????來到生成的工程目錄下。利用終端的 code . 指令打開vscode 。打開Makefile文件進行一波觀察。

????圖中C_DEFS 和 C_INCLUDES 當(dāng)中為工程的宏定義和頭文件引用目錄,需要將其錄入到c_cpp_properties.json 文件當(dāng)中。(Ctrl+Shift+P 可以生成c/cpp 配置文件)
【.. 臥槽?B站有代碼塊了!?。窟^了幾年就是不一樣了哈x 】
注意上述代碼中includePath 和 defines 當(dāng)中的內(nèi)容。照著這個該就行,不過在Makefile當(dāng)中,這些內(nèi)容有 -I 和 -D 的前綴,改一下,然后保存起來,日后可用。配置工作到此位置(如果之后打算在線Debug,還需要配置點別的,這不是本文要討論的內(nèi)容了)
接下來是修改基于HAL庫的STM32代碼,此處不贅述?!炯僭O(shè)你是李華,你的單片機朋友想要點亮兩個LED燈,但是苦于它就是個板子寫不了代碼遲遲行不通,現(xiàn)在請你在main.c 文件當(dāng)中編寫代碼幫助它實現(xiàn)愿望。字?jǐn)?shù)要求:不少于3行(x)】
【事實上正如第1部分中配置PF9 和PF10 所言,什么都不改直接運行燈他也能亮x】

3.make 編譯與 st-flash 燒錄
在工程的目錄下的終端里輸入make進行編譯(這里假設(shè)make ,以及交叉編譯的相關(guān)工具已經(jīng)安裝好了,網(wǎng)上能找到教程),會顯示如下的一些個信息:

圖3.1的最后一行內(nèi)容告訴你,名為led2.bin的文件生成在了工程目錄下的 build子目錄中。
cd build 進入這個目錄。
輸入以下命令,完成通過stlink的燒錄工作。

完成后應(yīng)該能看到stm32板子上的燈亮了?!纠钊A完成了單片機朋友的委托 :) 】
以上是全部的過程了,中間可能會涉及到很多工具的安裝,包括VSCODE當(dāng)中需要使用的Cmake等插件、在Linux上編譯ARM程序的交叉編譯器之類,本文沒有涉及(反復(fù)強調(diào)233)。這些在讀者嘗試“在Ubuntu系統(tǒng)下搭建STM32 開發(fā)環(huán)境”的過程中,都是容易查詢到的。筆者在自己嘗試搭建的過程中苦于沒有教程能夠指出東西都搭建完了之后怎么用,故作此篇,以饗后人(大噓)。
或許之后研究研究怎么配置在線Debug。