|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請問如何使用自己創(chuàng)建的KEIL庫? |
| 作者:楊秀瑋 欄目:MCU技術(shù) |
請問,我在KEIL中自己創(chuàng)建了一個庫,但是不知如何使用啊。煩請好心人指點(diǎn)一下如何使用!庫需要放在哪個目錄下?是否需要在工程中添加庫?是否需要創(chuàng)建頭文件?頭文件里寫些什么?是否需要外部聲明?KEIL環(huán)境如何設(shè)置?等等!謝謝 |
| 2樓: | >>參與討論 |
| 作者: zlg900 于 2006/2/7 9:21:00 發(fā)布:
re 在keil的hlp目錄下的英文文檔中有詳細(xì)介紹. 或者在網(wǎng)上搜索 "keil 生成 Lib" |
|
| 3樓: | >>參與討論 |
| 作者: LPC900 于 2006/2/7 9:47:00 發(fā)布:
自己建立庫文件(*.LIB)并不容易,需要注意方方面面的問題 1、必須懂得規(guī)范化C語言編程 重點(diǎn)是工程文件的組織形式,C源程序文件要與其頭文件分開。頭文件只能包括宏定義、函數(shù)聲明(某些函數(shù)不希望被他人訪問,可將其聲明應(yīng)當(dāng)放在C文件里)、結(jié)構(gòu)體定義、typedef定義等內(nèi)容,同時要防止重復(fù)包含問題。全局變量、全局結(jié)構(gòu)體對象、函數(shù)的具體實(shí)現(xiàn)等內(nèi)容應(yīng)當(dāng)放在C文件里。如果想了解更多規(guī)范化編程的知識,建議認(rèn)真讀讀林銳博士的名著《高質(zhì)量程序設(shè)計(jì)指南--C++/C語言》。如果編程時沒有注意到規(guī)范化問題,那么你自己生成的庫文件很可能因漏洞百出而無法使用。 2、I/O操作問題 實(shí)際的單片機(jī)程序,不像字符串處理這樣的功能,經(jīng)常會涉及I/O操作。有關(guān)I/O的定義,如sbit等,可以放在頭文件中。但是將來一旦生成庫文件,庫文件的用戶就無法再更改這些I/O的定義,如果強(qiáng)制修改,則庫文件中操作的依然是原先定義的I/O。 3、程序應(yīng)當(dāng)正確、規(guī)范、精簡 庫文件往往是交付客戶使用的,因此首先要保證其正確性。其次是規(guī)范,這里的規(guī)范是指接口的規(guī)范問題,主要體現(xiàn)在頭文件里。與Keil C51自帶的庫不通,未使用的函數(shù)仍然會占用ROM空間,因此寫得精簡的程序才能生成短小的庫文件,以節(jié)省客戶寶貴的存儲器資源。此外還要考慮庫文件的兼容性、可維護(hù)性(升級問題)、安全性等一系列問題?磥韺懗鲞@樣一份高質(zhì)量的程序并不容易。 4、庫文件的生成和使用 寫完源程序,并經(jīng)過驗(yàn)證無誤后,另建一個工程用于生成庫文件。新工程中只添加庫的C源程序,不要有main()函數(shù)。在Keil C51的“Options for Target..”設(shè)置的OUTPUT選項(xiàng)卡里,選中“Create Library”項(xiàng),然后確定。編譯工程,不能出現(xiàn)任何錯誤和警告,否則要排查。編譯后會生成后綴為“.LIB”的庫文件。頭文件和庫文件要一并提供給客戶,并附有詳細(xì)使用說明書(不要指望客戶去猜測你的意圖)?蛻羰褂脮r,要把庫文件添加進(jìn)工程(Keil C51自帶的庫文件無需添加),用到其中的庫函數(shù)時,只需先包含其頭文件。 |
|
| 4樓: | >>參與討論 |
| 作者: 楊秀瑋 于 2006/2/7 10:16:00 發(fā)布:
謝謝LPC900的熱心指點(diǎn),但請看我的代碼 我建了一個工程,里面只有一個文件,是.C文件,文件名ku.c 其完整的代碼如下: unsigned CHAR max(unsigned CHAR a,unsigned CHAR b) { if(a>=b) return(a); else return(b); } 然后編譯設(shè)置生成庫文件ku.lib 沒有任何警告和錯誤。 再寫一個頭文件ku.h 其完整的代碼如下: #ifndef __ku_h__ #define __ku_h__ extern unsigned CHAR max(unsigned CHAR a,unsigned CHAR b); #endif 然后再新建一個工程,把上述兩個文件放在新工程的文件夾下,這個新建工程只有一個C文件,完整代碼如下: #include "ku.h" void main(void) { unsigned CHAR c; c=max(2,0); c=max(3,5); c=max(10,100); } 編譯沒有錯誤,但有4個警告如下: linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: _MAX MODULE: siyan.obj (SIYAN) *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: _MAX MODULE: siyan.obj (SIYAN) ADDRESS: 0008H *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: _MAX MODULE: siyan.obj (SIYAN) ADDRESS: 000FH *** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL SYMBOL: _MAX MODULE: siyan.obj (SIYAN) ADDRESS: 0016H Program Size: data=9.0 xdata=0 code=36 "siyan" - 0 Error(s), 4 Warning(s). 進(jìn)入軟件仿真,觀察c的值,單步運(yùn)行,程序運(yùn)行不止,強(qiáng)制停止后c值始終為0 說明庫里的函數(shù)根本沒起作用啊!請教一下了,多謝各位! |
|
| 5樓: | >>參與討論 |
| 作者: LPC900 于 2006/2/7 12:39:00 發(fā)布:
你要自己研究了 我只會給出指導(dǎo)性意見,具體實(shí)踐還是要靠你自己。做一個好的庫文件不是初學(xué)者工作,確實(shí)需要一定的經(jīng)驗(yàn)。編譯時不能有錯誤和警告,否則要仔細(xì)排查。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |