STM32基礎——創建庫函數版工程

0、環境

 軟件版本號:Keil5.26

硬件CPU型號:STM32F407ZGT6

1、在本機創建工程文件夾

       所有的文件可不可以放在同一個目錄下?當然可以!但是爲了分類更清晰,一般選擇將不同功能的文件分別存放在不同目錄下。這裏,我們首先在本機上創建以下幾個文件夾。

Doc 存放一些說明性的文檔
Libraries 存放STM32固件庫
Project 存放Keil5工程文件
User 存放自己編寫的代碼

2、拷貝庫文件到工程文件夾下

1)拷貝固件庫中Libraries目錄下的內容到步驟一創建的Libraries目錄下。

2)刪除CMSIS目錄中不需要的內容

      2.1)CMSIS目錄下只保存:

           

      2.2)Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates目錄下只保存:

      

3)拷貝固件庫中:STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Project\STM32F4xx_StdPeriph_Templates目錄中

main.c、stm32f4xx_it.c、stm32f4xx_it.h、stm32f4xx_conf.h到User文件夾下。

4)刪除main.c文件的內容,寫一個空的main函數,並死循環在main中。

3、Keil5中創建工程

      1)Project——>New uVersion Project...

     2)選擇工程相關文件存放的路徑,輸入工程名稱

   3)根據自己手中開發板選擇處理器型號。如果你的Keil中此處沒有看到處理器類型,那是沒有安裝STM32芯片包。需要手動安裝。

4)我們的庫文件會自己手動拷貝到第一步創建的文件夾下,所以此處在線添加庫文件我們不需要,直接點右上角關閉。

4、添加文件到工程中

1)新建組

此處爲了清晰,我們同樣會在Keil中創建幾個文件夾分別存放不同類型的文件。

新建組(文件夾)的方法:Target 1上面右鍵——>Add Group

新建組重命名的方法:選中相應的組(背景變藍色),鼠標左鍵單擊,即可修改名稱。

建成組如下所示:

      

   2)添加文件到相應組中

   在組名稱上鼠標雙擊,就會彈出選擇框,然後按照下面步驟選擇。

          (1)如果沒有找到對應文件,請查看3、文件類型選擇是否正確。

          (2)可以一次選中多個文件進行添加。

 

3)添加結果

  (1)  STARTUP組下添加的startup_stm32f40xx.s (根據CPU型號選擇)文件位於:你的工程文件夾名\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm目錄下。

   因爲我的開發板的CPU型號是STM32F407ZGT6,所以我選擇的啓動文件是startup_stm32f40xx.s,你需要根據自己開發板上CPU的型號選擇對應的啓動文件。

  (2) CMSIS組下system_stm32f4xx.c文件位於 : 你的工程文件夾名\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates目錄下。

   (3)STM32F4xx_StdPeriph_Driver組下存放着你的工程文件夾名\Libraries\STM32F4xx_StdPeriph_Driver\src目錄下的所有 .c文件。

   (4)User組下main.c和stm32f4xx_it.c位於: 你的工程文件夾名\User目錄下。

5、配置“魔法棒”(此處沒有配置下載相關信息,請注意

1)target中選中:“Use MicroLib”。

2)配置C/C++(重點)

因爲創建的是庫函數模板, 所以需要在對處理器類型和庫進行宏定義, 在
Define 這一欄中複製這兩個宏: STM32F40_41xxx,USE_STDPERIPH_DRIVER
注意它們之間有一個英文符的逗號。 通過這兩個宏就可以對 STM32F40_41xx
系列芯片進行庫開發, 因爲在庫源碼內支持很多 F4 系列芯片, 通過這個宏就可
以選擇到底是用種芯片的庫驅動。 同理 USE_STDPERIPH_DRIVER 這個宏也是類似
的原理。

(2)添加頭文件路徑,具體如下所示

6、編譯

      等待編譯完成,發現有很多錯誤。不要被嚇到!,我們看看具體錯誤內容

      (1)雙擊錯誤行,Keil會跳轉到錯誤信息處。沒有找到main.h文件,那是因爲我們沒有寫main.h,所以刪除這行。

      (2)繼續編譯,發現依然有錯誤

出錯原因:STM32F407 只有 FSMC 功能, 但是使用的固件庫裏面有 FMC 和 FSMC 的功能,所以我們選擇把 FMC 在工程裏面屏蔽掉,就不編譯。同時, 固件庫裏面還有 DMA2D 和 LTDC 的庫,但是 F407 都沒有這兩個功能,所以我們也選擇把這兩個文件從工程裏面屏蔽掉。

(3)修改完,點擊“Rebuild”,依舊出錯,我們查看錯誤信息。刪除這一行。

(4)修改完,點擊“Rebuild”。這次可以看到沒有錯誤信息,也沒有警告信息。

7、後記

1)本文參考了火哥的視頻和書(感謝火哥開源了視頻和書籍)。雖然買的不是火哥的板子,但是毫不誇張的說,火哥的努力降低了STM32入門的門檻。

2)如果有問題,請前後再仔細檢查一遍。請查看CPU型號選擇與CPU相關文件是否對應。

3)如果還有問題,請bing。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章