1. 創建專案
動機
在本節中,我們將使用STM32CubeMX生成特定MCU的工程專案。 該專案將作為本使用指南中的其餘步驟的基礎。
我們將在接下來的步驟中使用STM32CubeMX改善專案,並編寫和整合程式碼,以使所有必需的周邊都正常工作。
這個專案會將長期存在以供反覆使用。 您現在應確定一種策略,使得不同的版本保持可用,以便可以返回並再次執行。 或者在新硬體上進行,或者只是重新檢查硬體。
也許您需要許多小型測試程式。 在這種情況下,該專案是一個很好的起點。
目標
其目標是在STM32CubeMX中創建一個可燒錄到您的開發板上並執行的專案。 如果您有帶除錯器的IDE(如STM32CubeIDE或IAR Embedded Workbench),則還應檢查是否可以除錯並逐步完成MCU上的專案。
如果您沒有除錯器,則應找到一種從專案的各個位置列印出調試語句的方法。 如 串列連接埠。
驗證
以下是本節的驗證點:
驗證點 | 基本原理 |
---|---|
在IDE中開啟專案 | 專案由STM32CubeMX生成,並可以用作後續開發板開發的起點。 |
專案編譯 | 此專案進行驅動程式包含類別路徑的正確設定。 我們可以編寫更多程式碼並重複編譯該專案。 |
進入斷點 | 專案可以調試運行並在斷點處停止。 我們可以檢查專案狀態並調查錯誤。 |
先決條件
以下是此步驟的先決條件:
- 基於STM32開發板
- 程式碼/除錯介面 - ST-LINK,JLINK或類似介面
- 安裝STM32CubeMX
- 安裝IDE - STM32CubeIDE、IAR Embedded Workbench、Keil μVision或類似軟體
執行
現在,我們將完成在STM32CubeMX中創建新專案的步驟。 在該範例中,我們將使用STM32F429 MCU。 當然,您應在硬體上選擇MCU。
在STM32CubeMX中,按下「從MCU啟動我的專案」的「存取MCU選擇器」:
也可以基於STM32評估套件啟動一個新專案,如STM32F429探索板。 如果您的硬體設計基於評估套件,您可以或說應當執行該操作。
然後,我們選擇相關MCU。 在這裡我們選擇STM32F429ZIT6U:
跳到專案管理員選項,並為專案命名。 當然,您也可以選擇新的專案儲存位置。 在「應用結構」下,選擇「進階」。 在「工具鏈/IDE」下,您必須選擇要使用的IDE。 在範例中,我們選擇IAR:
現在,按下右上角的「產生程式碼」按鈕。 如果這是您選取MCU系列(F4/F7/H7)中的首個專案,則STM32CubeMX自動建議下載相關STM32Cube韌體套件。 接受該選項,以獲取供以後使用的最新版本。
按下「開啟專案」,以開啟IDE中的專案:
STM32CubeMX生成的專案包含特定MCU啟動程式碼、中斷向量表、系統初始化程式碼以及MCU中所有外設週邊的HAL驅動程式。
現在可通過IDE編譯和除錯專案。 在IAR中,點選「專案」->「編譯」來編譯專案,點選「專案」->「下載並除錯」來除錯專案:
設置IAR專案,使用STLink除錯器。 如果您使用其他除錯器,請在IDE中更改專案的「除錯器」屬性。
在無作業系統的情況下運行的專案,main的while迴圈通常很重要。 通過設置斷點來檢查是否執行到某個位置,也可以在迴圈中添加一些程式碼。
建議瀏覽IDE中的專案,以熟悉程式碼結構。 另外,可以嘗試一下追踨SystemInit到main的動作步驟。
使用者代程式碼區段
對於此步驟,在開始編輯專案之前,至關重要的是瞭解STM32CubeMX使用的「使用者程式碼區段」這一概念。 專案的Core/Src資料夾中的所有來源檔均由STM32CubeMX產生。 在您以後更改STM32CubeMX中的專案設定時(如啟用UART),將重新生成其中的一些檔案。 您可能也在其中的一些檔中插入程式碼。 除非使用底下規則,使用者程式碼在使用STM32CubeMX重新產生專案時會被移除:
- 將程式碼寫在使用者程式區段
寫在使用者程式區段以外的任何程式碼都將被STM32CubeMX刪除。
在這個範例中,讓我們看一下Core/Src/main.c中的前幾行:
main.c
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
...
}
如果您希望在main函數的開頭插入程式碼,必須將其放在使用者程式碼開始1與使用者程式碼結束1之間。 如果將程式碼放在此區之外,它將被STM32CubeMX刪除。
Caution
進一步閱讀
此處的連結文件包含有關CubeMX的更多資訊: