[STM32] Hello STM32Cube with Blinking LED
Hello STM32Cube with Blinking LED
在這篇 [STM32] Why STM32 ? 筆記裡,我建議大家不要放掉 STM32Cube 的開發環境,所以這篇就利用最簡單的 "控制 GPIO- 閃爍 LED" 為題,分享我操作 STM32Cube 開發環境的過程。
Step 1: Install Software Tools - CubeMX & CubeIDE
ST 提供主要的 Software Tools中,CubeMX 和 CubeIDE 是 "必要" 的開發工具軟體程式,請先下載安裝 CubeMX & CubeIDE。
至於各項軟體程式的職司,請參考這篇 [Embedded] STM32 Software Tools。
Step 2: Launch STM32CubeMX and Download Software Package
安裝完成 ST32CubeMX 以及 STM32CubeIDE 軟體程式後,先開啟 ST32CubeMX
,然後點選 "Help -> Manage embedded software packages" 選擇你手上開發板對應的 software package 來安裝。
有了這 package,CubeMX 以及 CubeIDE 才能生成相對應程式碼 ,下圖就是以我 NUCLEO-F767ZI 開發板為例子的截圖。
Step 3: Launch STM32CubeIDE and Create project
開啟 ST32CubeIDE,然後點選 "File -> New -> STM32 Project"
接著畫面就會跳出如下的視窗,要你選擇你手上開發板的型號,點選你手上開發板的型號後,按下 Next。
完成開發板型號的選擇後,接著畫面就會跳出如下的視窗,要你輸入 Project Name 以及 Project Location。
輸入專案的名稱 "BlinkingLED" 以及專案擺放的位址後,就可按下 "Finish”,CubeIDE 就會建立你專案所需要的檔案
下圖是完成專案的建立時,CubeIDE 呈現的畫面。
這是 CubeIDE 產生的專案檔案結構,Core folder 下的 \Inc、\Src 是未來我們會頻繁改動的檔案,\Startup 則是 MCU startup assembler code。
到了這一步,CubeIDE 把你專案的 General Initial Code 建好了,下一步就必須靠我們自己去添油加醋了。
Step 4: Config LED GPIO
我是官方版本的 Nucleo Board,板子上就已經在 PB0 連接綠色的 LED,如下圖。
若你的開發板和我不同,請依照你手上板子作相對應的改變,找到連接 LED 的 GPIO腳位,然後將它設定成 GPIO_Output 屬性。
確定好腳位後,接著就是將 PB0 pin 設定成 GPIO_Output 的功能腳位。
PS: 從下圖也可以看到 PB0 可以設定成哪些功能腳位,另外若沒有將 PB0 pin 設定成 GPIO_Output ,PB0 在 CubeIDE 原生的 initial code 則會是 “Rest_State”,也就是 Tri_State,LED 是推不動的。
想更進一步的更改 PB0 的特性可以在 Pinout &Configuration 頁面 (sheet) 點選 System Core -> GPIO 接著在 GPIO Mode and Configuration 頁面選擇 PB0 做 PB0 Configuration,如下圖。
Step 5: Generate Initial Code
做完腳位的改動後,就是手動產生你改動後的 Initial Code,CubeIDE 是不會主動幫你做的,這時請點選 "Project -> Generate Code " 驅動 CubeIDE 重新產生 Initial Code。
Step 6: Add Blinking LED code into main.c
到步驟 5,還只是產生 Initial Code,PB0 / LED 是不會亮,更不會閃爍的,因為 PB0 的 Initial State 是 LOW,這時你還需要在 main.c 加入以下兩行 Code,這樣 PB0 / LED 才會以 100ms 的頻率閃爍。
HAL_GPIO_TogglePin (GPIOB, GPIO_PIN_0);
HAL_Delay (100); /* Insert delay 100 ms */
Step 7: Run & Debug
到這一步,就請大膽的連接開發板到 PC 端,然後按下 Run 或 Debug 驗收你的成果吧!
以上參考資料來自