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

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

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

如何將函數(shù)封裝成庫使用的方法介紹

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-01-12 16:32 ? 次閱讀

Other Parts Discussed in Post:C2000WARE

作者:Aki Li

在項目開發(fā)過程中,開發(fā)者出于保護核心算法的目的,希望將部分核心代碼封裝起來,使得其他使用者無法查看具體的代碼實現(xiàn)細節(jié),而不影響正常的調(diào)用。常見的思路是將核心的函數(shù)封裝成庫,下面將結(jié)合例程說明具體實現(xiàn)方法。

1.庫的建立

1).新建庫工程

在CCS中,選擇Project -> New CCS Project,在工程配置窗口中,選擇相應(yīng)的“Target” device,以及輸入自定義的工程名字;然后需要注意在“Project type and tool-chain -> output type”中選擇“Static Library”,而不是“Executable”,“Executable”對應(yīng)的是我們一般用到的可生成.out 可執(zhí)行文件的工程。

poYBAGGKR3qAM72lAAFC0LPIhVY692.png

圖 1 在CCS中新建庫工程

2).定義相關(guān)的庫函數(shù)

新建完工程后,即可將所需封裝的函數(shù)放入工程文件中,在此以簡單的一個功能函數(shù)為例進行說明。

poYBAGGKR32AZtgMAACadZE-Mgg276.png

圖 2 .C文件中添加目標庫函數(shù)

3).添加頭文件.h

先在工程目錄新建一個“include”文件夾,然后在該文件夾新建

pYYBAGGKR3-Aep8HAABd7ZWffVY671.png

pYYBAGGKR4CAVvAWAABbY7V_t4M115.png

圖 3 新建.h文件

在.h文件中進行庫函數(shù)的函數(shù)聲明。

poYBAGGKR4KAYeNmAADyvAC61k4983.png

圖 4 函數(shù)名聲明

至此,編譯該工程,即可生成所需的.lib文件,在默認的Debug文件路徑中。

pYYBAGGKR4OAXH_bAADJIDOqYGM655.png

圖 5 編譯生成對應(yīng)的.lib文件

2.在工程項目中使用該庫文件

以C2000WARE中的“led_ex1_blink”例程為例,說明下如何在實際工程中使用定義的庫文件。

1)建立文件鏈接

首先將第一步生成的.lib文件以及.h文件所在文件夾一并拷貝至目標工程,由于具體的庫函數(shù)代碼實現(xiàn)體現(xiàn)在.c文件,因此最終的工程無法索引至原始的.c文件。

poYBAGGKR4SAKUCqAAEmvmhS95w509.png

圖 6 復(fù)制相應(yīng)的.h和.lib文件

下一步需要在該工程中建立對庫文件的鏈接關(guān)系。首先在工程屬性 C2000 Compiler->Include Option中添加.h文件所在的文件路徑,注意此處使用的是相對路徑,以確保工程路徑發(fā)生變更時的一致性。

poYBAGGKR4aAbvxAAAFBgtoPfms580.png

圖 7 添加.h所在的文件路徑

然后,在C2000 Linker->File Search Path中分別添加對應(yīng)的.lib文件名以及所在文件路徑。

pYYBAGGKR4eAabEzAAEkPe0xnx4071.png

圖 8 添加.lib 文件名及路徑

2)添加函數(shù)頭文件及調(diào)用

在目標工程中添加.h文件的聲明,以及測試變量,并在主函數(shù)中進行調(diào)用。

pYYBAGGKR4mAWbM7AAC2iXNo4x4160.png

poYBAGGKR4uAfj1eAAA2Rvdn-so780.png

圖 9 .h文件聲明以及調(diào)用示例

燒錄該工程到芯片,運行后驗證“test”結(jié)果符合預(yù)期。

此外,除了上述方法,可以采用以下方式把工程的調(diào)試功能禁止,這樣在debug模式下就無法進行任何的調(diào)試操作以及查看代碼,具體步驟:

選擇“option --symdebug:none”,即在工程屬性Build->C2000 Complier->Advanced Options->Advanced Debug Options中選擇--symdebug:none作為Debugging model。

poYBAGGKR4yAGCfKAADnJ33tSNA900.png

圖 10 使能option --symdebug:none

選擇一個例程,進行以上配置后,在調(diào)試模式下的效果如圖 11所示。在該模式下,所有symbols和工程的鏈接將被移除,因此無法進行任何的調(diào)試操作以及查看源代碼。建議在工程開發(fā)的最后階段再使用該模式。

審核編輯:金巧

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

    關(guān)注

    125

    文章

    7593

    瀏覽量

    142147
  • 嵌入式處理
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    9957
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61971
收藏 人收藏

    評論

    相關(guān)推薦

    請問如何將cURL添加到ESP8266_RTOS_SDK項目中?

    我想使用 curl api,但我不知道如何將添加到我的項目中,這樣當我將該的頭文件包含在我的項目中時它就不會抱怨。 有誰知道如何正確地第三方
    發(fā)表于 07-09 07:52

    PADS2.7,如何將3D封裝與PCB封裝綁定,然后再PCB設(shè)計時可直接調(diào)用?

    PADS2.7,如何將3D封裝與PCB封裝綁定,然后再PCB設(shè)計時可直接調(diào)用?
    發(fā)表于 05-06 17:07

    在hightec中如何將源代封裝,并編譯鏈接成.a的庫函數(shù)?

    在hightec中如何將源代封裝,并編譯鏈接成.a的庫函數(shù)
    發(fā)表于 02-18 08:10

    如何將FreeMODBUS協(xié)議棧移植到AT32F43x單片機方法

    電子發(fā)燒友網(wǎng)站提供《如何將FreeMODBUS協(xié)議棧移植到AT32F43x單片機方法.pdf》資料免費下載
    發(fā)表于 12-18 11:15 ?0次下載
    <b class='flag-5'>如何將</b>FreeMODBUS協(xié)議棧移植到AT32F43x單片機<b class='flag-5'>方法</b>

    wps的vlookup函數(shù)的使用方法及實例

    WPS Office是一款功能全面的辦公軟件,其中的VLOOKUP函數(shù)在數(shù)據(jù)分析和處理中非常常用。在本文中,我們詳細介紹WPS Office中VLOOKUP函數(shù)的使用
    的頭像 發(fā)表于 12-01 10:58 ?3296次閱讀

    vlookup函數(shù)的使用方法

    的某個值,并返回該值所對應(yīng)的其他相關(guān)信息。在本篇文章中,我們詳細介紹VLOOKUP函數(shù)的使用方法,以幫助讀者更好地理解和掌握這個函數(shù)。 首
    的頭像 發(fā)表于 11-30 17:13 ?2290次閱讀

    SUMIF函數(shù)的使用方法

    SUMIF函數(shù)是Excel中常用的求和函數(shù)之一,它可以根據(jù)指定的條件對范圍內(nèi)的數(shù)值進行求和。本文詳細介紹SUMIF函數(shù)的使用
    的頭像 發(fā)表于 11-30 16:34 ?4488次閱讀

    寫好的C算法模塊怎么樣封裝成SigmaStudio里能用的圖形模塊呢?

    請教下寫好的C的算法模塊,怎么樣封裝成SigmaStudio里能用的圖形模塊呢?哪里有關(guān)于這個的方法說明文檔?謝謝!
    發(fā)表于 11-30 06:42

    python調(diào)用math函數(shù)方法

    中。本文詳細介紹math模塊中的各種數(shù)學(xué)函數(shù)的調(diào)用方法,包括函數(shù)的功能、參數(shù)的使用和返回值的含義等方面,以幫助讀者更好地理解和應(yīng)用這些
    的頭像 發(fā)表于 11-22 11:01 ?2104次閱讀

    c語言max函數(shù)在哪個

    C語言的max函數(shù)并不屬于標準C,它通常是由程序員自己編寫的一個宏定義。max函數(shù)用于比較兩個數(shù)的大小,返回較大的數(shù)值。 為了提供更多詳實的信息,下面詳細
    的頭像 發(fā)表于 11-22 10:18 ?2432次閱讀

    函數(shù)信號發(fā)生器怎么使用?函數(shù)信號發(fā)生器實現(xiàn)方法通常有哪幾種?

    函數(shù)信號發(fā)生器怎么使用?函數(shù)信號發(fā)生器實現(xiàn)方法通常有哪幾種? 函數(shù)信號發(fā)生器是一種用于產(chǎn)生不同類型、頻率和幅度信號的儀器。它在各個領(lǐng)域的測試、研究和教學(xué)中都有廣泛的應(yīng)用。接下來我
    的頭像 發(fā)表于 11-20 16:16 ?3889次閱讀

    方法|基于T507開發(fā)板講如何將占用引腳配置為普通GPIO

    方法|基于T507開發(fā)板講如何將占用引腳配置為普通GPIO
    的頭像 發(fā)表于 11-09 13:59 ?501次閱讀
    <b class='flag-5'>方法</b>|基于T507開發(fā)板講<b class='flag-5'>如何將</b>占用引腳配置為普通GPIO

    怎么封裝函數(shù)庫

    怎么封裝函數(shù)庫,只留一些回調(diào)函數(shù)和引腳定義,完整程序不讓人看
    發(fā)表于 11-08 08:12

    如何實現(xiàn)lib封裝?

    看到別人的程序里有l(wèi)ib一個文件,在MDK中雙擊打不開。這應(yīng)該是個函數(shù)封裝吧。如果做自己的函數(shù)封裝
    發(fā)表于 10-23 06:44

    IAR環(huán)境如何將數(shù)學(xué)函式編排到sLib保護區(qū)

    IAR環(huán)境如何將數(shù)學(xué)函式編排到sLib保護區(qū)在IAR 環(huán)境下,如何將數(shù)學(xué)函式編排到SLIB 保護區(qū)?
    發(fā)表于 10-20 07:03