STM32學習心得二:新建工程模板

記錄一下,方便以後翻閱~
特點
參考正點原子教學視頻,固件庫模板步驟用紅色字體表示寄存器模板步驟用綠色字體表示,黑色字體是共同步驟。
1)新建一個空文件夾(名字自定)用來存放今後開發某項目的所有開發程序,在該文件夾中,新建一個USER空文件夾(推薦用USER名);
2)MDK軟件中,單擊Project→New μVision Project新建一個工程,輸入工程文件名,選擇好芯片後點擊OK;
在這裏插入圖片描述
在這裏插入圖片描述
3)在USER文件夾中,Listings和Objects兩個文件夾用來存放編譯過程產生的中間文件(爲了跟MDK5.1之前版本兼容),
新建CORE(核心文件和啓動文件),OBJ(編譯過程文件和hex文件),STM32F10x_FWLib(庫函數源碼文件)三個空文件夾(與USER文件夾並列)/新建CORE(核心文件和啓動文件)和OBJ(編譯過程文件和hex文件)兩個空文件夾(與USER文件夾並列);
在這裏插入圖片描述
在這裏插入圖片描述
4)將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver裏的src(存放固件庫的.c文件),inc(存放對應的.h文件)兩個文件夾複製到STM32F10x_FWLib文件夾裏;將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport裏的core_cm3.c和core_cm3.h複製到CORE文件夾裏;將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm裏的startup_stm32f10x_hd.s[1]文件複製到CORE文件夾裏,此時CORE文件夾裏有三個文件
在這裏插入圖片描述將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm裏的startup_stm32f10x_hd.s文件複製到CORE文件夾裏,此時CORE文件夾裏只有一個文件

5)將STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x裏的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h複製到USER文件夾裏;將STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template裏的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h複製到USER文件夾裏,此時USER文件夾裏多了七個文件
在這裏插入圖片描述
6)在MDK軟件中,右鍵Target1,單擊Manage Project Items…,在Project Items界面、Groups一欄,刪除Source Group 1,新建USER,CORE,FWLIB,單擊OK(這裏也可以重命名Target1)/在MDK軟件中,右鍵Target1,單擊Manage Project Items…,在Project Items界面、Groups一欄,刪除Source Group 1,新建USER,CORE單擊OK(這裏也可以重命名Target1);
在這裏插入圖片描述
7)在MDK軟件中,回到之前的Manage Project Items界面,在Project Items界面,選中FWLIB,單擊Add Files,選擇STM32F10x_FWLib\src,選中裏面所有的.c文件,單擊Add(其實只需添加需要用的.c文件);
選中CORE,單擊Add Files,將CORE文件夾裏的core_cm3.c和startup_stm32f10x_hd.s添加進來
/選中CORE,單擊Add Files,將CORE文件夾裏的startup_stm32f10x_hd.s[3]添加進來;
選中USER,單擊Add Files,將USER文件夾裏的main.c,stm32f10x_it.c和system_stm32f10x.c添加進來/在MDK軟件中,新建一個test.c文件(即主函數main.c文件[2],名字可自定),保存在USER文件夾裏,然後在Manage Project Items界面,Project Items選項,選中USER,將剛纔新建的.c文件添加進來);

8)在MDK軟件中,單擊魔術棒,在Output選項裏,勾選Create HEX File,單擊Select Folder for Objects,選擇OBJ文件夾(放棄將編譯過程文件存放在Listings和Objects中);
在這裏插入圖片描述
在這裏插入圖片描述
9)在C/C++選項裏,單擊Include Paths右邊的…,添加三個頭文件目錄,在Define裏輸入STM32F10X_HD,USE_STDPERIPH_DRIVER/在C/C++選項裏,在Define一欄裏輸入STM32F10X_HD;

在這裏插入圖片描述
在這裏插入圖片描述

10) 此時,工程模板已建立完成。接下來,添加ALIENTEK提供的公用代碼。將SYSTEM文件夾複製到工程文件中(與USER文件夾並列),在MDK軟件中,右鍵Target1,單擊Manage Project
Items…,在Project Items界面、Groups一欄,新建SYSTEM,選中SYSTEM,單擊Add Files,將SYSTEM文件夾裏的sys.c,delay.c和usart.c添加進來,然後單擊OK;
11)單擊魔術棒,在C/C++選項裏,單擊Include Paths右邊的…,添加SYSTEM文件夾裏的三個頭文件,新建工程模板最終完成。
備註:
[1] startup_stm32f10x_hd.s是一段和硬件相關的彙編代碼,主要作用:1)堆棧(SP)的初始化;2)初始化程序計數器(PC);3)設置向量表異常事件的入口地址;4)調用Main函數。ST公司有三個文件,分別對應不同的STM32芯片:
startup_stm32f10x_ld.s對應FLASH≤32K的STM32芯片;
startup_stm32f10x_md.s對應64K≤FLASH≤128K的STM32芯片;
startup_stm32f10x_hd.s對應256K≤FLASH的STM32芯片。
[2]寄存器模板的主函數文件可以先這麼寫:```

#include “sys.h”
#include “usart.h”
#include “delay.h”

int main(void)
{
      u8 t=0;
      Stm32_Clock_Init(9);       //系統時鐘設置
      delay_init(72);            //延時初始化
      uart_init(72,115200);      //串口初始化爲115200
      while(1)
      {
           printf(“t:%d\r\n”,t);
           delay_ms(500);
           t++;
       }
}

可直接編譯後利用FlyMcu下載程序至STM32開發版中,進行調試。
[3]寄存器模板和庫函數模板的startup_stm32f10x_hd.s區別在於,寄存器模板的需要註釋三行代碼:

;IMPORT  SystemInit
;LDR     R0, =SystemInit
;BLX     R0 

舊知識點
1)複習如何使用FlyMcu調試程序,可參考STM32學習心得一:FlyMcu軟件配置

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