1. 程式人生 > >STM32官方庫檔案分析及使用

STM32官方庫檔案分析及使用

本文以STM32F10x_StdPeriph_Lib_V3.5.0版本庫檔案為例

1、解壓在官網下載的庫檔案,資料夾內容詳解如下圖所示


2、下面逐個資料夾分析一下,首先開啟“Libraries”資料夾,“CMSIS”資料夾中

   是一些Cortex-M3核心檔案及一些啟動檔案這裡我們先不理會它,一會建立工程

   的時候我們新增他們就可

“STM32F10x_StdPeriph_Driver”資料夾中是一些庫原始碼,我們來分析一下其中

    的內容,如下圖



3、我們返回到庫檔案的根目錄,在來看一下“Project”資料夾,開啟該資料夾,如

   下圖



4、我們開啟工程模板資料夾“STM32F10x_StdPeriph_Template”,來分析一下在我

   們建立工程的時候都需要做些什麼。


資料夾EWARM,HiTOP,RIDE,TrueSTUDIO用於不同開發環境使用,詳情查詢各資料夾下的檔案readme.txt。

上面我們只對庫檔案做一個簡單的介紹,具體的大家可以百度或者參考ST官網的一些說明加上庫檔案的幫助檔案來具體瞭解一下。

下面我們來利用庫檔案來建立一個屬於我們自己的模板專案


1、首先我們建立一個模板資料夾,在此資料夾中新建3個資料夾,分別為Doc、

   Output、Project,再將庫檔案中的Libraries資料夾複製到該目錄下。



2、在模板資料夾中新建一個文字文件,在文件中輸入如下內容,並更改檔名稱為

  “刪除MDK產生的過程檔案.bat”(一定要將副檔名更改為.bat)

   (此部分程式碼是從神舟開發板檔案中摘錄過來的,非原創)


del *.bak /s 
::/S 處理當前資料夾及其子資料夾中的匹配檔案。 
del *.ddk /s
del *.edk /s
del *.lst /s
del *.lnp /s
del *.mpf /s
del *.mpj /s
del *.obj /s
del *.omf /s
::del *.opt /s  ::不允許刪除JLINK的設定
del *.plg /s
del *.rpt /s
del *.tmp /s
del *.__i /s
del *.crf /s
del *.o /s
del *.d /s
::del *.axf /s
::del *.hex /s
::del *.bin /s
del *.tra /s
del *.dep /s           
del JLinkLog.txt /s


del *.iex /s
del *.htm /s
del *.sct /s
del *.map /s
 
exit


3、將庫函式STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template

   目錄下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h這4個檔案複製

   到“模板\Project”資料夾中。


4、開啟UVision4,在“模板\Project”資料夾下新建一個工程,取名叫Demo。

  (如果是第一次使用的話會開啟一個自帶的工程檔案,我們可以通過工具欄

   Project->Close Project 選項把它關掉)


5、選擇晶片型別,這裡我們以STM32F103ZET6為例



6、選擇好晶片之後,點選OK,系統會彈出提示詢問是否新增啟動檔案,為了保持庫

   的完整性,我們就不需要開發環境為我們自帶的啟動程式碼了,這裡我們點否


7、接下來我們為工程新增必要的檔案,在UVision4的專案管理器中,右鍵單擊

   Target 1,選擇“管理元件”

8、在元件視窗中,雙擊最左側Target 1,更改名稱為Demo,在Groups中刪除原有

   組,新建User、StdPeriph_Driver、CMSIS、MDK-ARM、Doc這幾個組。



9、下面我們向組中新增檔案,點選選中User,在最後面一欄Files欄下方點選新增檔案,新增文

   件路徑如下

模板\Project資料夾下的:main.c、stm32f10x_it.c

main.c使用者主函式

stm32f10x_it.c:中斷服務函式



10、點選選中StdPeriph_Driver,點選新增檔案,新增檔案路徑如下

模板\Libraries\STM32F10x_StdPeriph_Driver\src中的所有檔案

這些檔案是ST標準外設驅動函式



11、點選選中CMSIS,點選新增檔案,新增檔案路徑如下

模板\Libraries\CMSIS\CM3\CoreSupport資料夾中的core_cm3.c

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x資料夾中的system_stm32f10x.c

core_cm3.c:Cortex-M3核心及其裝置檔案

─ 訪問Cortex-M3核心及其裝置:NVIC,SysTick等 ─ 訪問Cortex-M3的CPU暫存器和核心外設的函式

system_stm32f10x.c:微控制器專用系統檔案

─ 函式SystemInit,用來初始化微控制器 ─ 函式Sysem_ExtMemCtl,用來配置外部儲存器控制器。它位於檔案startup_stm32f10x_xx.s /.c,在跳轉到main前呼叫 ─SystemFrequncy,該值代表系統時鐘頻率





12、點選選中MDK-ARM,點選新增檔案,新增檔案路徑如下

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm資料夾中startup_stm32f10x_hd.s

這些檔案都是一些系統啟動檔案

startup_stm32f10x_cl.s 互聯型的器件,STM32F105xx,STM32F107xx
startup_stm32f10x_hd.s 大容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_hd_vl.s 大容量的STM32F100xx
startup_stm32f10x_ld.s 小容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_ld_vl.s 小容量的STM32F100xx
startup_stm32f10x_md.s 中容量的STM32F101xx,STM32F102xx,STM32F103xx
startup_stm32f10x_md_vl.s 中容量的STM32F100xx
startup_stm32f10x_xl.s FLASH在512K到1024K位元組的STM32F101xx,STM32F102xx,STM32F103xx



至此,檔案新增完畢了,下面我們來解釋一下,具體這些檔案的作用

最後我們需要對MDK環境進行一下設定

1、點選MDK環境中的目標選項按鈕


2、我們首先選擇輸出檔案的資料夾,我們選擇Output資料夾,再填寫你要輸出的文

   件命名,最後勾選產生exe檔案



3、點選C/C++選項卡,在Define 裡面輸入新增USE_STDPERIPH_DRIVER, 

   STM32F10X_HD。新增USE_STDPERIPH_DRIVER 是為了遮蔽編譯器的

   預設搜尋路徑,轉而使用我們新增到工程中的ST的庫,新增STM32F10X_HD 

   是因為我們用的晶片是大容量的,添加了STM32F10X_HD 這個巨集之後,

   庫檔案裡面為大容量定義的暫存器我們就可以用了。晶片是小或中容

   量的時候巨集要換成STM32F10X_LD或者STM32F10X_MD。其實不管是什麼

   容量的,我們只要新增上STM32F10X_HD 這個巨集即可,當你用小或者中

   容量的晶片時,那些為大容量定義的暫存器我不去訪問就是了,反正也

   訪問不了。


4、在“包含檔案路徑”欄點選,在這裡新增庫檔案的搜尋路徑,這樣就可以遮蔽掉

   預設的搜尋路徑。



新增路徑為:

模板\Project

模板\Libraries\CMSIS\CM3\CoreSupport

模板\Libraries\STM32F10x_StdPeriph_Driver\inc

模板\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x

至此,我們的模板工程就建立完畢!

本人新手一枚,文章中可能存在一些錯誤,如有發現請及時指出,我們共同討論進步!