1. 程式人生 > >STM32學習1:建立工程模板

STM32學習1:建立工程模板

STM32學習1:建立工程模板


  STM32是基於ARM核心(cortex-m3系列屬於armv7架構)的32位MCU,特點是高效能、低成本、低功耗,總之就是價效比很高,可以滿足很多簡單嵌入式裝置的需求。由於市面上STM32的資料很多,學習起來會比較方便,所以很多人會選擇STM32入門嵌入式開發。
  鄙人也是在淘寶購置了一套普中STM32開發板,跟著隨帶的光碟學習起來的。碰到不懂的就在CSDN上瀏覽學習高手的部落格,大神們不僅技術很好還樂於分享,蒙其惠澤,未感忘恩,所以自己開始寫部落格慢慢積累。
  如果您是初學者,看到該系列文章後有所幫助,鄙人深感榮幸。如果您是大神,請您指出不足指出。如果沒人看到,權當積累與記錄了。
  鄙人使用普中科技公司的開發板,在淘寶可以找到。晶片是STM32F103ZET6,韌體庫是V3.5,編譯環境是Keil uVision4。
  轉載請註明完整出處。


  下圖是STM32系列的規格與命名正規化。

  下面開始正題,如何從0開始建立一個STM32的軟體工程模板。


# 1,建立工程資料夾   新建一個資料夾作為工程檔案的儲存目錄,鄙人自己是將其命名為test1的,下同。   將韌體庫中的Libraries資料夾複製貼上到test1。   在test1資料夾中:     新建Output資料夾(生成的輸出檔案,包括hex檔案)     新建Startup資料夾(啟動檔案)     新建User資料夾(自己編寫的main函式、中斷等)     新建App資料夾(儲存編寫的外設)   在**韌體庫\Project\STM32F10x_StdPeriph_Template**目錄下複製**main.c;stm32f10x_conf.h;stm32f10x_it.c;stm32f10x_it.h**這四個檔案到test1\User下   做好後test1如下圖所示:

2,Keil新建工程

  開啟Keil uVision4 軟體,新建專案,如下圖所示。

  相應的在test1資料夾中多了一個新東西。

  接下來新增組與檔案。
  可能有人會問不是已經在test1中新建了資料夾以及檔案嗎,為什麼還要在這裡重複新增一遍。這是因為在test1中新建只是在電腦硬盤裡面新建的,並沒有告訴uVersion4這個編譯器,在編譯器中設定的組是虛擬的,它要連結到具體的電腦硬碟的檔案當中,所以要在組內新增進實實在在的檔案。這樣才可以把各種檔案組織起來形成工程環境。

  將原有預設的Souce Group 1組刪除,刪除按鈕在新建組按鈕右邊。
  新建User組,在該組新增test1\User 下的兩個檔案:main.c;stm32f10x_it.c
  新建Cmsis組(存放SM32核心檔案),在該組新增:
    test1\Libraries\CMSIS\CM3\CoreSupport下的core_cm3.c
    test1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的system_stm32f10x.c
  新建Startup組,在該組新增test1\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下的startup_stm32f10x_hd.s 注意預設的檔案型別是.c檔案,要改成All files(.)才會顯示。
  新建Stdperiph_Drive組,在該組新增test1\Libraries\STM32F10x_StdPeriph_Driver\src下的stm32f10x_gpio.cstm32f10x_rcc.c。為了減小生成檔案的大小,這裡根據需要新增檔案。最基本的是GPIO和RCC,它們分別是輸入輸出和時鐘。
  新建App組不新增檔案。點選OK後可以在左側的Project欄看到新建的組和組內的檔案。


3,Keil工程配置

  在這裡我們需要改動的地方有以下幾個。
  第三個Output裡面:

  第四個Listing裡面:

  第六個C/C++裡面:新增 編譯指令 USE_STDPERIPH_DRIVER,STM32F10X_HD

  後面需要注意第九個Debug ,選擇左邊Use Simulator表示軟體模擬,選擇右邊表示JLINK或JTAG硬體模擬,我們選擇軟體模擬。
點選OK,工程配置結束。


4,收尾

  從左側Project欄開啟main.c,可以看到裡面系統預設存在很多程式碼。

  將其全部刪除後,新增如下程式碼。

  建立公共標頭檔案。
  stm32f10x.h是STM32自帶的庫函式。如果在後續開發中還有其他自己寫的函式都要把標頭檔案新增到公共標頭檔案public.h中,這樣main.c只需包含了公共標頭檔案就可以呼叫所有的函數了,結構更加清晰並且程式碼不會被重複編譯。

  如果出現warning,很可能是游標位置不當。每個檔案的游標要放在程式碼最後一行的下一行,也就是最後要多空出來一行。這樣編譯就不會有問題啦。

  注意,改動後要將對應的檔案儲存後再點選編譯。否則,硬碟中的檔案其程式碼並沒有變化,點選編譯也只是重複編譯了一遍未改動的程式碼。
至此簡單的工程模板就建立成功了。可以將這個模板儲存好,以後在做專案的時候複製過來一份模板,在模板上新增程式碼,這樣會比較方便。
  這裡有我的建立好的工程模板和stm32的一些說明檔案。
  https://download.csdn.net/download/huagengpai1994/10809289