0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

由庫引生出來的話題

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-14 14:36 ? 次閱讀

寫在前面 Ⅰ

庫,對于編程的人來說,都應(yīng)該知道。但有很多初學(xué)者,及已經(jīng)工作的朋友對庫的理解還處于書本概念階段,也就是自己沒有生成及使用過庫。

其實(shí),還有很多朋友不知道printf打印函數(shù)是怎么回事,我們在代碼中調(diào)用printf函數(shù)打印數(shù)據(jù)時(shí),已經(jīng)調(diào)用了標(biāo)準(zhǔn)的“微庫”,這里可以參看我的文章:關(guān)于printf和scanf在開發(fā)STM32中的配置和應(yīng)用

什么情況下要生成庫?

1.代碼模塊化定型。也就是說模塊代碼的功能在經(jīng)過無數(shù)次驗(yàn)證,并無誤后,方便團(tuán)隊(duì)的協(xié)同開發(fā),這個(gè)時(shí)候可以將模塊代碼生成庫。

2.提供SDK給客戶開發(fā)。這里一般是指源代碼對客戶不具有公開性的原因,包括某些特有算法、實(shí)現(xiàn)特有功能的具體過程等。

生成庫的原則?

簡單來說就是使代碼結(jié)構(gòu)化、模塊化、源碼不具公開性等。要求代碼高內(nèi)聚、低耦合。

Keil、IAR如何生成庫? Ⅱ

代碼工程生成庫的過程只需要對工程進(jìn)行配置即可,這里再簡單講一下過程,其實(shí)在我“系列教程”中有相關(guān)內(nèi)容。

Keil:Project -> Options for Target -> Output 勾選上“Create Library”即可。

IAR:Project -> Options -> General Options -> Output 勾選上“Library”即可。

庫在工程的使用方法 Ⅲ

“.Lib”、“.a”這種庫大家可以理解為“.c”,只是它已經(jīng)經(jīng)過處理而已。我們只需要像添加“.c”文件,將其添加到工程即可。如下圖,我們將STM32F10x_StdPeriph_Driver標(biāo)準(zhǔn)外設(shè)庫生成“STM32F10x_StdPeriph_Driver.a”庫,添加到工程中:

靜態(tài)庫和動(dòng)態(tài)庫的區(qū)別? Ⅳ

上面Keil生成的庫是以“.Lib”為后綴的文件,IAR是以“.a”為后綴的文件,你們知道他們是靜態(tài)庫還是動(dòng)態(tài)庫嗎?

答案是:二者都是靜態(tài)庫。

為什么都是靜態(tài)庫呢? 先看一下靜態(tài)庫和動(dòng)態(tài)庫的區(qū)別就會(huì)知道。

簡單的來說二者的區(qū)別:

靜態(tài)庫:就是在編譯的時(shí)候直接將需要的代碼連接進(jìn)可執(zhí)行程序中去;

動(dòng)態(tài)庫:就是在需要調(diào)用其中的函數(shù)時(shí),根據(jù)函數(shù)映射表找到該函數(shù)然后調(diào)入堆棧執(zhí)行。

從上面的描述可以知道,靜態(tài)庫是我們MCU開發(fā)者常用的一種,而動(dòng)態(tài)庫常用于Linux、Windows等開發(fā)場合。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16802

    瀏覽量

    349355
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    344

    瀏覽量

    36560
  • 模塊化
    +關(guān)注

    關(guān)注

    0

    文章

    326

    瀏覽量

    21304
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1209

    瀏覽量

    166453
收藏 人收藏

    評論

    相關(guān)推薦

    OPA548如果4腳(V-)接GND的話,電壓最低能輸出來多少?能到0V嗎?

    想確定一下OPA548如果4腳(V-)接GND的話,電壓最低能輸出來多少,能到0V嗎,看手冊寫的是軌對軌的
    發(fā)表于 08-28 08:27

    I2S MCLK沒有信號(hào)的原因?

    ,i2s_mclk_gpio_select()這個(gè)函數(shù)在官方的IDF和ADF的文檔里都找不到。上面這些都講的模糊不清,不一定能用,有沒有人明確用I2S實(shí)際產(chǎn)生出來MCLK,說明下如何用。就為來產(chǎn)生
    發(fā)表于 06-19 06:37

    ADuC845來畫PCB的話,需要引出來哪幾個(gè)腳來燒錄?TXD和RXD嗎?

    我需要買什么下載器來下載嗎?如果我使用這個(gè)芯片來畫PCB的話,需要引出來哪幾個(gè)腳來燒錄?TXD和RXD嗎?
    發(fā)表于 05-31 06:09

    單片機(jī)變量存儲(chǔ)大小什么決定?

    最近看到群友在討論【單片機(jī)變量存儲(chǔ)大小什么決定?】的話題。
    的頭像 發(fā)表于 01-26 10:11 ?567次閱讀
    單片機(jī)變量存儲(chǔ)大小<b class='flag-5'>由</b>什么決定?

    求助怎么減少labview仿真中生成信號(hào)的點(diǎn)數(shù)

    這個(gè)仿真控制生出來的信號(hào)數(shù)據(jù)點(diǎn)太多了,計(jì)算一秒都上萬個(gè)點(diǎn)了,求求怎么減少點(diǎn)
    發(fā)表于 01-19 19:55

    自舉電路自舉電阻和自舉電容的工作原理是什么?

    有射極跟隨器衍生出來的自舉電路,是怎么得出這個(gè)名字的,是否和變頻器單電源供電的自舉驅(qū)動(dòng)有相似之處?在這個(gè)電路中,所謂的自舉電阻和自舉電容起到了一個(gè)什么樣的作用?
    發(fā)表于 01-11 15:07

    將ADP7102的NC(第4腳)接地的話會(huì)導(dǎo)致沒有電壓輸出嗎?

    將ADP7102的NC(第4腳)接地的話會(huì)導(dǎo)致沒有電壓輸出嗎?數(shù)據(jù)手冊上標(biāo)記的是“NO CONNECT.DO NOT CONNECT TO THIS PIN.”而在做板時(shí)已經(jīng)將其接地,現(xiàn)在測試時(shí)沒有電壓輸出,這可能是NC接地導(dǎo)致的嗎?通常情況下NC不是可以接地的嗎?
    發(fā)表于 01-09 07:34

    當(dāng)前數(shù)據(jù)國產(chǎn)化進(jìn)程情況如何?

    最近,關(guān)于數(shù)據(jù)國產(chǎn)化替代的話題甚是熱門。OSCHINA 開源中國特別邀請了歐冶云商股份有限公司數(shù)據(jù)首席薛曉剛就這一話題發(fā)表看法。
    的頭像 發(fā)表于 12-14 10:18 ?699次閱讀

    AD7606的44、45和42腳不接電容的話,會(huì)對采樣的數(shù)據(jù)產(chǎn)生影響嗎?

    AD7606的44、45和42腳不接電容的話,會(huì)對采樣的數(shù)據(jù)產(chǎn)生影響嗎?現(xiàn)在我的程序是能檢查到busy信號(hào)并且數(shù)據(jù)有轉(zhuǎn)換,但是數(shù)據(jù)不對,會(huì)變化,采樣電壓2v和3v的數(shù)值是一樣的,出現(xiàn)著這種情況適合
    發(fā)表于 12-14 07:58

    從人生、歷史到單片機(jī)的話題討論

    我們來看單片機(jī) 的例子,讀者可能會(huì)擔(dān)心單片機(jī)(又稱MCU,或微控制器) 過于專業(yè)而無法理解。完全沒必要!在這里我們僅借它談?wù)撘幌掠嘘P(guān)時(shí)間的話題,順帶提一下單片機(jī)系統(tǒng)的概念。
    的頭像 發(fā)表于 12-05 10:35 ?477次閱讀
    從人生、歷史到單片機(jī)<b class='flag-5'>的話題</b>討論

    話題通信接口的定義和運(yùn)行效果

    ,將驅(qū)動(dòng)相機(jī)并發(fā)布圖像話題,此時(shí)的話題數(shù)據(jù)使用的是ROS中標(biāo)準(zhǔn)定義的Image圖像消息; 第二個(gè)節(jié)點(diǎn),會(huì)運(yùn)行視覺識(shí)別功能,識(shí)別目標(biāo)的位置,這個(gè)位置我們希望封裝成話題消息,發(fā)布出去,誰需要使用誰就來訂閱; 第三個(gè)節(jié)點(diǎn),訂閱位
    的頭像 發(fā)表于 12-01 15:32 ?372次閱讀
    <b class='flag-5'>話題</b>通信接口的定義和運(yùn)行效果

    神秘又有趣的話題——芯片引腳順序!

    親愛的“芯”朋友,你們有沒有發(fā)現(xiàn),每顆芯片上都布滿了密密麻麻的引腳,猶如一座迷宮,讓人無從下手?今天,我們一起來揭開這個(gè)迷宮的神秘面紗,探索一下這個(gè)既神秘又有趣的話題——芯片引腳順序!芯片,這個(gè)看似
    的頭像 發(fā)表于 11-28 09:33 ?1.3w次閱讀
    神秘又有趣<b class='flag-5'>的話題</b>——芯片引腳順序!

    我的第一個(gè)UVM代碼——Hello world

    run_test調(diào)用了uvm_test派生出來的testcase(hello_world)。 為什么run_test能夠通過字符串\"hello_world\"找到testcase?與宏定義
    發(fā)表于 11-03 10:18

    如何使用51單片機(jī)通過揚(yáng)聲器將要說的話出來?

    如何使用51單片機(jī)通過揚(yáng)聲器將要說的話出來
    發(fā)表于 10-30 09:02

    Access數(shù)據(jù)案例:Labview數(shù)據(jù)存儲(chǔ)

     在數(shù)據(jù)領(lǐng)域,Access是Microsoft開發(fā)的一款基于Windows平臺(tái)的關(guān)系型數(shù)據(jù)管理系統(tǒng)(RDBMS)。它提供了一個(gè)使用簡便的用戶界面,可用于創(chuàng)建、管理和查詢數(shù)據(jù)。
    發(fā)表于 10-26 16:23 ?9次下載