新建基於STM32F103ZET6的工程-寄存器版本


1、新建空白工程

  新建一個文件夾,用來存放新建的工程文件。在這個新建的文件夾下創建MDK-PRO和OUTPUT兩個子文件夾。MDK-PRO文件夾用來存放工程文件;OUTPUT用來存放工程編譯器后輸出的文件。

  打開MDK軟件,點擊“Project ->New uVision Project”創建新工程。

 

  輸入工程的名稱並選擇存放新建工程的目錄。

  選擇芯片型號。

 

  點擊OK后就創建了一個空工程。如圖

 

  用鼠標右擊MDK工程欄中的Group,選擇‘Manage Project Items’。然后添加如下圖所示的Group。

  接下來先將工程的編譯輸出文件設置到OUTPUT文件夾中。在MDK軟件中,選擇“Options for Target”,在彈出來的界面中選擇Output選項卡,點擊“Select Folder for Listings…”,在彈出來的界面中選擇OUTPUT文件夾。

  然后再選擇Listing選項卡,點擊“Select Folder for Listings…”,也在彈出來的界面中選擇OUTPUT文件夾。

 

2、添加啟動文件

  一般STM32的工程都需要加載啟動代碼,啟動代碼是一段和硬件相關的匯編代碼。

  啟動代碼的主要作用如下:

  堆棧(SP)的初始化。

  初始化程序計數器(PC)。

  設置向量表異常事件的入口地址。

  調用main函數。

  ST公司已經寫好了啟動文件,只要找到對應芯片的啟動文件然后調用就可以了。

  ST公司提供了3個啟動文件,這三個文件分別是:

  startup_stm32f10x_ld.s是小容量IC的啟動文件。

  startup_stm32f10x_md.s是中容量IC的啟動文件。

  startup_stm32f10x_hd.s是大容量IC的啟動文件。 

  小容量是指FLASH≤32KByte的IC。

  中容量是指64KByte≤FLASH≤128KByte的IC。

  大容量是指256KByte≤FLASH≤512KByte的IC。

  STM32F103ZET6的FLASH容量為512KB,是大容量的IC,所以使用的啟動文件是:startup_stm32f10x_hd.s。

  startup_stm32f10x_hd.s文件可以在官方提供的固件庫里找到。

  將startup_stm32f10x_hd.s復制到MDK-PRO文件夾下。

   

  將startup_stm32f10x_hd.s文件添加到MDK軟件中。

  選中startup_stm32f10x_hd.s文件后點擊add。

3、新建源文件

  點擊新建文檔,輸入相應的內容,然后保存為.c文件,將.c文件保存在MDK-PRO文件夾中,然后將.c文件添加到工程當中。

  如上圖所示,點擊編譯並沒有發現任何錯誤,但這個工程只是一個空的工程,什么操作都沒有,寄存器也沒有封裝。如果這時候要操作寄存器,就得直接用指針操作寄存器的地址,如操作GPIOF的ODR寄存器,就得使用 *(unsigned int *)(0x40011C0C)。這樣顯得比較麻煩,可以通過添加ST提供的頭文件來操作寄存器,其提供的頭文件已經將STM32的寄存器封裝好。

4、添加頭文件

  STM32的不同類型的芯片的頭文件是有差別的,STM32F103ZET6的頭文件是stm32f10x.h,這些頭文件可以在ST提供的固件庫里找到。將stm32f10x.h文件放到工程目錄下,然后將stm32f10x.h文件包含進項目當中。

  點擊編譯,發現錯誤,點擊提示的錯誤會跳轉到出錯的地方,如下圖:

  錯誤提示說找不到core_cm3.h文件,在stm32f10x.h文件中引用了一些頭文件,必須找到這些文件並放到工程中才能消除錯誤,通過錯誤提示,可以查找到缺少的頭文件,分別是:cmsis_armcc.h、core_cm3.h、core_cmFunc.h、core_cmInstr.h和system_stm32f10x.h等頭文件,這些文件都能在ST提供的固件庫中找到。添加完這些文件之后再點擊編譯就可以通過了。

  stm32f10x.h文件是通過結構體封裝STM32寄存器的,使用寄存器可以通過結構體來操作。如下圖中的程序控制GPIOF的寄存器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM