使用IAR建立庫以及如何使用庫

2021-08-09 01:25:22 字數 1701 閱讀 2806

在使用stm32的韌體庫的時候,需要往工程中新增使用到的功能的對應原始檔,比如:stm32f10x_gpio.c等等,乙個個新增很麻煩不說,每次在rebuild的時候都要編譯這些基本不變的檔案.

而通過使用庫則可以解決這些問題,首先只需新增一次庫檔案,第二rebuild的時候只編譯我們自己寫的原始檔

建立庫的過程(iar中):

新建乙個dlib工程,把stm32f10x_***.c這樣的檔案和對應標頭檔案全部複製到工程資料夾下(不複製也可以),然後新增進去,還有core_cm3.c, misc.c, system_stm32f10x.c, 這些都新增進去.(注意:不要新增.h標頭檔案,這和keil是不一樣的,iar裡不用新增標頭檔案,只需要原始檔裡#include就行了.)

.s啟動檔案則可以根據實際需要新增,當然你也可以每種型號都分別建立乙個對應的庫.然後在實際工程中根據不同的**選擇不同的庫.

新增進去後,開啟工程屬性設定.

general option:

target屬性框裡選擇晶元;

output屬性框裡的output file裡選擇library(如果新建的工程是dlib的話,這裡預設已經是了);

library configuration屬性框裡的library選項選擇none;   (這裡注意哦)

c/c++ compile:

optimizations裡可以選擇優化等級.

preprocessor裡,additional include directories欄裡新增包含檔案的路徑.如同一般工程一樣把頭檔案的路徑新增進去.

ok,設定如上.編譯後,將會後成乙個.a檔案.

以上是debug模式下生成的庫檔案,release下的設定同上.兩者間的不同的是debug選項中預設輸出除錯資訊,而release中預設沒有.同時時我們可以在release中根據需要把優化等級調高一點.最後,release模式下生成的庫檔案小一點.

如何使用庫:

和平時一樣建乙個工程,或者隨便開啟乙個你自己的stm32工程.然後新增庫,兩種方法可以新增庫:

1.可以直接像新增原始檔一樣,在工程中右鍵->add files,然後新增.a檔案.

2.右鍵屬性,在linker選項中的library選項卡中的additional libraries:中新增.而且可以在debug屬性中新增debug模式產生的庫,release中新增release模式生成的庫.需要注意的是不能只新增路徑,檔名也要寫上. 比如:e:/iar_lib/stm32/stm32_d.a

ok,這時你就可以把像stm32f10x_gpio.c這樣的檔案從工程中remove了.

(使用庫)和(不使用庫手動新增stm32f10x_gpio.c)之間,在實際工程中,最終生成的可執行檔案的大小是一樣的.

最後,在實際工程中:

只需將stm32f10x_conf.h, stm32f10x_it.h, stm32f10x_it.c複製到工程資料夾,然後把stm32f10x_it.c新增進工程就行了 (當然,前面已經說過,無論是在arm工程,還是庫工程中,iar都不需要新增標頭檔案,新增了反而會編譯出錯,只需要原始檔中#include) 

另外上述三檔案最好不要建立成庫,因為它們在不同的工程下都是不一樣的,這個就不用我說了吧. :)

上述三檔案在stm32庫中的stm32f10x_stdperiph_lib_v3.3.0/project/stm32f10x_stdperiph_template中有,當然例子中也有,經常有人找不到這三個檔案在哪....

**:

IAR庫檔案生成及使用方法

iar庫檔案生成及使用方法 庫檔案的生成 1.開啟所用庫的工程檔案,如i2c匯流排eeprom庫 2.修改相應引數 若不清楚,請詢問權威人士 1.微控制器型號 2.選擇release或debug,一般預設選擇release 3.scl,sda,wp對應的微控制器引腳 4.延時函式及晶振頻率,一般來說...

使用 庫建立關聯容器

原文出處 use the library to create associative containers 摘要 當索引是整型,那麼將值與之關聯並不難,但如果資料的關聯值對是其它資料型別怎麼辦呢?庫具備乙個關聯容器,使用它可以很方便地關聯所有型別的資料對。本文將討論 庫的使用方法和技巧。關聯式資料庫...

建立和使用靜態庫

我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。本文主要通過舉例來說明在linux中如何建立靜態...