STM32 是一系列由 STMicroelectronics 生產的 32 位元微控制器,廣泛應用於嵌入式系統開發。網路上大多數教學都是在 Windows 上用 Keil 開發,這裡介紹在 Linux 伺服器上搭建 STM32 的開發環境。

本文介紹 STM32 開發工具的安裝。需要安裝這幾個工具:

  1. 編輯器,寫程式碼總需要一個編輯器吧。這裡選擇 VS Code。
  2. STM32CubeMX,ST 公司開發出的用於產生程式碼的工具。顯然比起從零開始寫程式碼,改程式碼可能要輕鬆一點。
  3. GCC 交叉編譯器,寫好的程式碼需要經過編譯才能在單晶片上執行。
  4. 驅動程式。確切地說是讓電腦能夠辨識單晶片,把寫好的程式碼傳送到單晶片上。這個和硬體高度相關,這裡用 CH343 驅動。
  5. 除錯工具,寫程式碼總是離不開除錯吧。OpenOCD,Open On-Chip Debugger。

當然這些工具的安裝並沒有先後順序,就一一開始吧。最後會以 hello world 的範例來介紹。

1. 編輯器安裝

使用 VS Code,當然也可以用 Cursor。到官網下載即可。

2. STM32CubeMX 安裝

STM32CubeIDE 是由 STMicroelectronics 提供的官方整合開發環境,它整合了程式碼編輯器、編譯器、除錯器等工具。下載之前,需要在 ST 官網上註冊一個帳號。

然後選擇:

  1. 造訪 STM32CubeIDE 的官方網站下載最新版本的安裝包:STM32CubeIDE
  2. 執行安裝腳本。例如,如果下載的檔名為 STM32CubeIDE_1.9.0_linux.tar.gz,則解壓後執行:
cd STM32CubeIDE_1.9.0_linux
./install.sh

3. 交叉編譯工具

2.1. 安裝 GCC ARM Embedded Toolchain

STM32CubeIDE 預設使用 GCC ARM Embedded Toolchain 進行編譯。造訪 GCC ARM Embedded Toolchain 的官方網站:GCC ARM Embedded。下載適合 Linux 的版本。

tar -xzf gcc-arm-none-eabi-10.3-2021.07-x86_64-linux.tar.bz2
sudo mv gcc-arm-none-eabi-10.3-2021.07 /usr/local
echo 'export PATH=/usr/local/gcc-arm-none-eabi-10.3-2021.07/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

當程式碼編譯好之後,需要透過序列埠的方式把程式碼下載到單晶片上。

5. 安裝 OpenOCD

OpenOCD 全稱是 Open On-Chip Debugger,是一個開源的除錯器,用於與 STM32 微控制器進行通訊。透過套件管理器安裝 OpenOCD。

sudo apt install openocd # ubuntu
sudo dnf install openocd # redhat

6. 點亮流水燈

到此為止,所有的工具都已經安裝完成。這裡用一個點亮流水燈的程式來驗證前面的設定是正確的。點亮流水燈就是 STM32 的 hello world。

6.1. 實現原理

流水燈就是一串 LED 燈連續發光。單晶片有一堆接腳,有些接腳可以作為輸出接腳。當然,在接腳上能看到的就是電位的高低。LED 是單向導通的,需要在正極處輸入高電位,在負極處輸入低電位。這個時候有兩種思路。

  1. 將 LED 的負極連接到低電位,正極連接到單晶片。當單晶片輸出高電位時候就

6.2. 程式碼產生

用 STM32CubeMX 進行。此時有四個

通電實際執行。

7. 小結

在 Linux 伺服器上搭建 STM32 開發環境,可以充分利用 Linux 的穩定性和效能,為 STM32 開發提供強大的支援。透過上述步驟,可以輕鬆地在 Linux 伺服器上搭建起一個完整的 STM32 開發環境,開始嵌入式開發之旅。