用過stm32f10x有一段時間了,但是對其庫文件一直沒有一個清晰的了解,上午心血來潮,就想整理一下。
首先什么是stm32庫,庫在c51單片機中應該是看不到,因為c51單片機都是直接操作寄存器來控制芯片,比如中斷,定時器,GPIO等等,配置的時候,需要一遍又一遍的看數據手冊,查看寄存器表,看看需要配置寄存器的哪些位,是配置0還是1。51單片機資源少,直接配置寄存器所以看起來并不是那么麻煩,但是stm32f10x的資源相比普通51單片機多較多,直接配置寄存器會變得很繁瑣。這時候就出現了庫。
庫是架設(位于)在寄存器和用戶驅動程序之間的代碼,向上給用戶提供配置底層寄存器的接口,?向下得到用戶的配置信息后,對底層寄存器進行配置。因為庫的存在,用戶不需要直接按位配置底層寄存器了,只需配置庫提供的函數接口,對寄存器的操作,交給庫函數來完成。
STM32的3.5版庫可以直接從官網獲得?,進入庫目錄STM32F10x_StdPeriph_Lib_V3.5.0,其中有Libraries文件夾,里面包含驅動庫的源碼和啟動文件;其他比如Project文件夾中是一些例程;還有HTML文檔,是庫幫助文檔,主要是告訴用戶如何使用驅動庫來編寫自己的應用程序。
STM32F10x_StdPeriph_Lib_V3.5.0
雙擊打開Libraries文件夾,可以看到里面有倆個文件夾,CMSIS和STM32F10x_StdPeriph_Driver.先來說說什么是CMSIS,考慮一下,應該是個簡寫,其全稱是cortexmicrocontroller software interfacestandard,是ARM與芯片廠商建立的一種標準,CMSIS標準中包含內核函數層和設備外設訪問層,內核函數層包含內核寄存器的名稱、地址定義,主要有ARM公司提供;設備外設訪問層,提供了核外外設或者片上外設的地址和中斷定義,主要有芯片廠商提供。
CoreSupport文件夾
先說說CMSIS文件夾,CMSIS->CM3,可以看到CoreSupport和DeviceSupport倆個文件,倆個文件分別指的是內核函數層和核外外設訪問層。點開CoreSupport文件夾可以看到core_cm3.h和core_cm3.h文件,core_cm3.c文件包含進入M3內核的接口,內核寄存器等等,core_cm3.c和啟動文件一樣,有ARM公司提供,都是底層文件。
DeviceSupport->ST->??STM32F10x文件夾
進入DeviceSupport->ST->??STM32F10x文件夾,可以看到:包含stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h文件以及startup文件夾。先談談startup文件夾吧,里面是一系列的系統啟動文件,都是由會變語言編寫的?,啟動文件的是處理器上電復位后最先運行的一段匯編程序,其作用是初始化堆棧指針SP、初始化程序計數器PC、設置堆、棧的大小、設置異常向量的入口地址,配置外部的SRAM,設置C庫的入口分支為_main.所以啟動文件作用很重要。
此外,stm32f10x.h文件是一個非常底層的文件?,它的作用是定義了寄存器的地址和使用的結構體封裝,處理器廠商都會對內存的操作封裝成一個宏,即我們所說的寄存器,這些都是定義在stm32f10x.h文件中。?system_stm32f10x.c是由st公司提供的,該文件的功能是設置系統的時鐘和總線時鐘,system_stm32f10x.h是systsm_sym32f10x.c的頭文件,system_stm32f10x.c會用到鎖相環(PLL,因為這個文件就是配置時鐘嘛),所以必然要用到寄存器,所以需要包括stm32f10x.h文件。?
最后說說?STM32F10x_StdPeriph_Driver文件夾,?這里是設備外設部分函數庫,里面的src文件夾是是設備外設的驅動程序,inc是對應的頭文件。用到什么設備外設,就添加相應的設備外設文件進去。
inc文件夾
src文件夾
|