STM32學習 | 初識固件庫,固件庫應該是什么樣子的?


一、固件庫是什么?

所謂固件庫,這里指的是STM32的標准外設固件庫,以STM32F103為例,其固件庫英文全稱為STM32F10x Standard Peripherals Firmware Library 。

     在STM32F103的官方固件庫手冊首頁中,有對於固件庫的解釋:

This library is a firmware package which contains a collection of routines, data structures and macros covering the features of STM32 peripherals. It includes a description of the device drivers plus a set of examples for each peripheral. The firmware library allows any device to be used in the user application without the need for in-depth study of each peripheral’s specifications.

     中文釋義為:

這個庫是一個固件包,它包含了一系列的例程、數據結構和宏,涵蓋了STM32外設的功能,包括設備驅動程序的描述以及為每個外設配套的一組例子。

該固件庫允許在用戶應用中使用任何設備,而不需要深入研究每個外設的規格。

二、固件庫應該包含哪些文件?

  1. 匯編寫的啟動文件

    startup_stm32f10x_hd.s :設置堆棧指針、設置PC指針、初始化中斷向量表、配置系統時鍾、調用C庫函數去到C的世界。

  2. 時鍾配置文件

    system_stm32f10x.c :把外部時鍾HSE=8M,經過PLL倍頻為72M。

  3. 內核相關的文件

    (1)符合“CMSIS” —— Cortex 微控制器軟件接口標准,是ARM公司設計的與ST等供應商無關的硬件抽象層,使不同的單片機廠家做到相對兼容。

    core_cm3.h : 實現了內核里面外設的寄存器映射。

    core_cm3.c

    (2)NVIC(嵌套向量中斷控制器)、SYSTICK(系統滴答定時器),這一部分是ST公司對ARM的內核裁剪后定制的內容。

    misc.h

    misc.c

  4. 片上外設相關的文件

    stm32f10x.h :實現了片上外設的寄存器映射(給寄存器的地址取個別名)。

    以下的“xx” :包含GPIO、USART、I2C、SPI、FSMC等等各種外設,數量很多。

    stm32f10x_xx.c : 外設的驅動函數庫文件(比如GPIO的置位和復位函數)。

    stm32f10x_xx.h : 存放外設的初始化結構體,外設初始化結構體成員的參數列表,外設固件庫函數的聲明。

  5. 頭文件的配置文件

     

    Stm32f10x_conf.h : 頭文件的頭文件,里面包含了以下頭文件。

    //stm32f10x_usart.h

    //stm32f10x_i2c.h

    //stm32f10x_spi.h

    //stm32f10x_adc.h

    //stm32f10x_fsmc.h

    ……

    為了方便在程序中包含各種外設頭文件,所以有了這一配置文件,在實際程序中,此文件被寫在stm32f10x.h的最后。所以程序中只需包含stm32f10x.h就夠了。
  6. 專門存放中斷服務函數的c文件

    stm32f10x_it.c

    stm32f10x_it.h

    中斷服務函數也可以隨意放在其他地方,但是為了方便和統一,一般都放在stm32f10x_it.c里面。

 

總結:固件庫編程相對於寄存器編程有開發效率快,節省精力的好處。分析固件庫的組成,對理解其功能和原理有所幫助。

 


免責聲明!

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



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