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
至此,我們的模板工程就建立完畢!
本人新手一枚,文章中可能存在一些錯誤,如有發現請及時指出,我們共同討論進步!