Skip to content

[STM32學習記錄-6] 在VS Code與PlatformIO上開發STM32

發佈

前言

PlatformIO 是一個開源的嵌入式系統整合開發平臺,你可以在上面使用各式各樣的開發板進行開發,包括 Arduino、ESP8266 與今天的主角 STM32。我認為它的重點特色為:

本篇文章將會介紹並示範如何在 VS Code 上使用 PlatformIO 開發 STM32。

正文

安裝 PlatformIO

最一開始當然就是安裝相關軟體了,而 PlatformIO 其實並不綁定 VS Code,它可以和許多不同的 IDE 或文字編輯器整合,甚至獨立運作。本篇就以 VS Code 為主,其它種類的安裝方式請參考官方文件

VS Code 的安裝沒什麼特別的,就不再贅述。安裝完 VS Code 後只要去擴充功能(Extensions)處搜尋並安裝 PlatformIO IDE,並等待其安裝完成就可以了,超級簡單。

▲ 安裝 PlatformIO IDE。
▲ 安裝 PlatformIO IDE。

安裝完成後就可以看到 VS Code 的側邊多了 PlatformIO 的 Icon,點擊它並點選「QUICK ACCESS > PIO Home > Open」就可以進入其主要畫面——PIO Home。

▲ PIO Home。
▲ PIO Home。

安裝 ST STM32 平臺

PlatformIO 支援許多平臺(Platforms),例如 Atmel AVR、Espressif 8266、ST STM32等,而本篇要使用的是 STM32,所以需要安裝 ST STM32 平臺

在 PIO Home 的左側欄位點擊「Platforms」,點擊上方的「Embedded」頁面並搜尋「ST STM32」,找到後就可以點擊「Install」進行安裝,安裝可能需要花一點時間。完成後就可以在「Installed」頁面中看到「ST STM32」。

▲ 安裝 ST STM32 平臺。
▲ 安裝 ST STM32 平臺。

建立專案

接下來就可以建立專案了。在 PIO Home 的左側欄位中點擊「Projects」,再頁面中點擊「+ Create New Project」。

在創建專案頁面(Project Wizard)中有幾個欄位需要填寫:

▲ 建立專案。
▲ 建立專案。

剛開始接觸比較會有問題的應該是「Framework」的選擇。依據我的經驗,有關 STM32 市面上的書和網路上的教學通常使用的就是「STM32Cube」,所以如果你剛入門 STM32 對它的使用不是這麼熟悉的話就選「STM32Cube」,這樣出問題時會有比較多的資源可以參考。

本次範例使用「STM32Cube」。不過我個人其實相當推薦使用「libopencm3」,如果你對 STM32 或嵌入式系統有一定的瞭解的話可以試試看。我有寫一些簡單的範例並放在 GitHub 上,預計之後也會寫一些文章來介紹它。

最後就按下「Finish」就會開始創建專案了。

專案結構

PlatformIO 的專案結構大致如下(有方括弧的是資料夾):

其中比較重要的是「platformio.ini」這個檔案,該檔案就儲存了此專案的設定,其內容大致如下:

; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter
;   Upload options: custom upload port, speed and extra flags
;   Library options: dependencies, extra library storages
;   Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
 
[env:nucleo_f103rb]
platform = ststm32
board = nucleo_f103rb
framework = stm32cube

從「platformio.ini」的內容可以看出以下資訊:

不難看出 PlatformIO 可以在一個專案中設定多種不同的環境,以配合不同的開發需求,這也是我認為 PlatformIO 好用的一大重點。

編寫程式

接下來就寫個簡單的 LED 閃爍程式作為示範。

在資料夾「src」中新增檔案「main.c」,並加入以下的程式碼:

PlatformIO 的 GitHub 上也有一些範例程式可以看:platformio/platform-ststm32

建置&燒錄程式

寫完程式後就是進行建置與燒錄了。

點擊 VS Code 左側欄位的 PlatformIO Icon,並點擊「PROJECT TASKS」中對應環境的「Build」進行建置。本範例只有一個環境「nucleo_f103rb」,故點擊「nucleo_f103rb > Gereral > Build」。也可以點擊下方狀態條的「PlatformIO: Build」按鈕。

▲ Build 與 Upload 按鈕。
▲ Build 與 Upload 按鈕。

如果都沒問題的話會在終端機看到「SUCCESS」,那就可以接上開發板繼續進行燒錄了。如果你是使用 ST-Link 的話,記得要安裝 ST-Link 的驅動程式

▲ 建置(Build)成功訊息。
▲ 建置(Build)成功訊息。

燒錄(上傳)的按鈕和建置在相同的地方,按下「Upload」就可以進行燒錄了,同樣也可以點擊下方狀態條的「PlatformIO: Upload」按鈕。第一次可能會花比較久的時間,看到終端機顯示「SUCCESS」就代表程式燒錄成功。

▲ 燒錄(Upload)成功訊息。
▲ 燒錄(Upload)成功訊息。

結語

這次簡單介紹了如何在 VS Code 上透過 PlatformIO 來開發 STM32。

我覺得不管是 VS Code、PlatformIO 還是 STM32 都是非常好用的東西,所以當他們整合在一起就令我感到非常滿意。

在之前,我一直是使用 TrueSTUDIO 這個 由 ST 官方所維護的 IDE 進行 STM32 的開發,甚至還寫了一篇文章來介紹它。後來隨著 VS Code 逐漸在程式圈流行,我越來越常使用 VS Code,也開始想要在 VS Code 上開發 STM32。但是開發環境的設置就讓我忙了好久,最後也沒搞定就放棄了。

就在幾個禮拜前,我無意間得知 PlatformIO,並且看到它也可以用來開發 STM32,而有支援 VS Code,我就馬上進行測試,而結果令我相當滿意,也就誕生了這篇文章,希望大家也可以試著透過 PlatformIO 與 VS Code 開發 STM32。

參考資料

其它資訊

撰寫本文時的相關資訊:


[LibOpenCM3 × STM32教學-1] 用LibOpenCM3來開發STM32-LED閃爍範例
跨越六十三萬個地日

留言可能不會立即顯示。若過了幾天仍未出現,請 Email 聯繫:)