STM32 是一系列由 STMicroelectronics 生產的 32 位元微控制器,廣泛應用於嵌入式系統開發。網路上大多數教學都是在 Windows 上用 Keil 開發,這裡介紹在 Linux 伺服器上搭建 STM32 的開發環境。
本文介紹 STM32 開發工具的安裝。需要安裝這幾個工具:
- 編輯器,寫程式碼總需要一個編輯器吧。這裡選擇 VS Code。
- STM32CubeMX,ST 公司開發出的用於產生程式碼的工具。顯然比起從零開始寫程式碼,改程式碼可能要輕鬆一點。
- GCC 交叉編譯器,寫好的程式碼需要經過編譯才能在單晶片上執行。
- 驅動程式。確切地說是讓電腦能夠辨識單晶片,把寫好的程式碼傳送到單晶片上。這個和硬體高度相關,這裡用 CH343 驅動。
- 除錯工具,寫程式碼總是離不開除錯吧。OpenOCD,Open On-Chip Debugger。
當然這些工具的安裝並沒有先後順序,就一一開始吧。最後會以 hello world 的範例來介紹。
1. 編輯器安裝
使用 VS Code,當然也可以用 Cursor。到官網下載即可。
2. STM32CubeMX 安裝
STM32CubeIDE 是由 STMicroelectronics 提供的官方整合開發環境,它整合了程式碼編輯器、編譯器、除錯器等工具。下載之前,需要在 ST 官網上註冊一個帳號。
然後選擇:
- 造訪 STM32CubeIDE 的官方網站下載最新版本的安裝包:STM32CubeIDE。
- 執行安裝腳本。例如,如果下載的檔名為
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
4. 安裝 st-link 工具
當程式碼編譯好之後,需要透過序列埠的方式把程式碼下載到單晶片上。
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 是單向導通的,需要在正極處輸入高電位,在負極處輸入低電位。這個時候有兩種思路。
- 將 LED 的負極連接到低電位,正極連接到單晶片。當單晶片輸出高電位時候就
6.2. 程式碼產生
用 STM32CubeMX 進行。此時有四個
通電實際執行。
7. 小結
在 Linux 伺服器上搭建 STM32 開發環境,可以充分利用 Linux 的穩定性和效能,為 STM32 開發提供強大的支援。透過上述步驟,可以輕鬆地在 Linux 伺服器上搭建起一個完整的 STM32 開發環境,開始嵌入式開發之旅。