国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-01-12 16:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Other Parts Discussed in Post:C2000WARE

作者:Aki Li

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

1.庫的建立

1).新建庫工程

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

poYBAGGKR3qAM72lAAFC0LPIhVY692.png

圖 1 在CCS中新建庫工程

2).定義相關的庫函數

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

poYBAGGKR32AZtgMAACadZE-Mgg276.png

圖 2 .C文件中添加目標庫函數

3).添加頭文件.h

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

pYYBAGGKR3-Aep8HAABd7ZWffVY671.png

pYYBAGGKR4CAVvAWAABbY7V_t4M115.png

圖 3 新建.h文件

在.h文件中進行庫函數的函數聲明。

poYBAGGKR4KAYeNmAADyvAC61k4983.png

圖 4 函數名聲明

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

pYYBAGGKR4OAXH_bAADJIDOqYGM655.png

圖 5 編譯生成對應的.lib文件

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

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

1)建立文件鏈接

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

poYBAGGKR4SAKUCqAAEmvmhS95w509.png

圖 6 復制相應的.h和.lib文件

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

poYBAGGKR4aAbvxAAAFBgtoPfms580.png

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

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

pYYBAGGKR4eAabEzAAEkPe0xnx4071.png

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

2)添加函數頭文件及調用

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

pYYBAGGKR4mAWbM7AAC2iXNo4x4160.png

poYBAGGKR4uAfj1eAAA2Rvdn-so780.png

圖 9 .h文件聲明以及調用示例

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

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

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

poYBAGGKR4yAGCfKAADnJ33tSNA900.png

圖 10 使能option --symdebug:none

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

審核編輯:金巧

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 封裝
    +關注

    關注

    128

    文章

    9248

    瀏覽量

    148610
  • 嵌入式處理
    +關注

    關注

    0

    文章

    341

    瀏覽量

    10509
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67499
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Keil MDK生成LIB及使用LIB

    問題引出:為什么要做成lib? 1、不想將自己寫的源代碼公開,但是同時文件又需要讓別人能夠正常調用,那封裝成lib的格式就是一個方法。 2、編譯某些工程文件時非常耗時,像ST官方的
    發表于 01-22 07:17

    請問怎么封裝函數庫

    怎么封裝函數庫,只留一些回調函數和引腳定義,完整程序不讓人看
    發表于 12-22 13:49

    vivado中,怎么e203內核源代碼封裝成ip核,并添加總線?

    vivado中,怎么e203內核源代碼封裝成ip核,并添加總線?
    發表于 11-10 07:22

    如何將某個函數或變量放在固定的地址 ?

    如題,如何將某個函數或者變量放在固定的地址?類似于__attribute__( at(絕對地址) ),用的nucleistudio ide, __attribute__( at(絕對地址) )出現警告 at屬性被忽視,有類似的屬性嗎?
    發表于 11-07 06:07

    如何將GCC項目導入NuEclipse?

    如何將GCC項目導入NuEclipse?
    發表于 09-01 07:04

    深入理解C語言:函數—編程中的“積木塊”藝術

    鍵問題:1.避免重復:重復代碼封裝成函數,實現“一處修改,全局生效”,讓維護更高效。2.邏輯清晰:每個函數專注一個特定任務(如計算、顯示等),代碼可讀性大幅提升。3.
    的頭像 發表于 06-30 17:26 ?1858次閱讀
    深入理解C語言:<b class='flag-5'>函數</b>—編程中的“積木塊”藝術

    AD封裝安裝教程

    電子發燒友網站提供《AD封裝安裝教程.pdf》資料免費下載
    發表于 06-19 15:35 ?3次下載

    自己寫:構建庫函數雛形

    實際上,構建固件是一件費時費力的事情,并且它對開發者對芯片的熟悉程度有一定的要求。甚至,當一個固件封裝程度很高時,想要閱讀并理解該固件的底層代碼也會變成一件有較高難度的事情。瑞
    的頭像 發表于 06-19 11:19 ?1155次閱讀
    自己寫<b class='flag-5'>庫</b>:構建庫<b class='flag-5'>函數</b>雛形

    PCB標準封裝文件

    PCB標準封裝文件
    發表于 05-22 17:43 ?10次下載

    芯片傳統封裝形式介紹

    微電子封裝技術每15年左右更新迭代一次。1955年起,晶體管外形(TO)封裝成為主流,主要用于封裝晶體管和小規模集成電路,引腳數3 - 12個。1965年,雙列直插式封裝興起,引腳數增
    的頭像 發表于 05-13 10:10 ?3005次閱讀
    芯片傳統<b class='flag-5'>封裝</b>形式<b class='flag-5'>介紹</b>

    Allegro Skill封裝功能之導出單個封裝介紹

    在PCB設計中,若需提取特定封裝,傳統用Allegro自帶導出方法需通過"File→Export→Libraries"導出全部封裝文件。
    的頭像 發表于 04-16 17:33 ?3629次閱讀
    Allegro Skill<b class='flag-5'>封裝</b>功能之導出單個<b class='flag-5'>封裝</b><b class='flag-5'>介紹</b>

    解鎖TSMaster fifo函數:報文讀取的高效方法

    前言:TSMaster目前有兩種讀取報文的模式:回調函數模式和fifo模式。fifo函數是TSMaster近期新增的函數,本文重點介紹fi
    的頭像 發表于 03-14 20:04 ?1141次閱讀
    解鎖TSMaster fifo<b class='flag-5'>函數</b>:報文讀取的高效<b class='flag-5'>方法</b>

    GaNPX?和PDFN封裝器件的焊接專業經驗

    介紹如何將GaN Systems的GaNPX? 和PDFN封裝下的E-HEMT器件焊接到PCB。
    的頭像 發表于 03-13 17:38 ?1398次閱讀
    GaNPX?和PDFN<b class='flag-5'>封裝</b>器件的焊接專業經驗

    如何將Linux安裝包快速轉成玲瓏包

    本篇將以 motrix 為例為大家展示如何將 Linux 安裝包快速轉成玲瓏包。
    的頭像 發表于 03-12 16:01 ?1661次閱讀
    <b class='flag-5'>如何將</b>Linux安裝包快速轉成玲瓏包

    如何將HAL轉為LL

    怎么HAL轉為LL
    發表于 03-10 06:08