1. 程式人生 > 其它 >STM32學習 | 初識韌體庫,韌體庫應該是什麼樣子的?

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裡面。

 

總結:韌體庫程式設計相對於暫存器程式設計有開發效率快,節省精力的好處。分析韌體庫的組成,對理解其功能和原理有所幫助。