音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(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ù)
請問如何使用自己創(chuàng)建的KEIL庫?
請問,我在KEIL中自己創(chuàng)建了一個庫,但是不知如何使用啊。煩請好心人指點(diǎn)一下如何使用!庫需要放在哪個目錄下?是否需要在工程中添加庫?是否需要創(chuàng)建頭文件?頭文件里寫些什么?是否需要外部聲明?KEIL環(huán)境如何設(shè)置?等等!謝謝



2樓: >>參與討論
zlg900
re
在keil的hlp目錄下的英文文檔中有詳細(xì)介紹.

或者在網(wǎng)上搜索 "keil 生成 Lib"

3樓: >>參與討論
LPC900
自己建立庫文件(*.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樓: >>參與討論
楊秀瑋
謝謝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
你要自己研究了
我只會給出指導(dǎo)性意見,具體實(shí)踐還是要靠你自己。做一個好的庫文件不是初學(xué)者工作,確實(shí)需要一定的經(jīng)驗(yàn)。編譯時不能有錯誤和警告,否則要仔細(xì)排查。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問如何掉高LPC900的時鐘精度?
lpc900有沒有5V電源供電的?
LPC901的標(biāo)示字節(jié)是唯一的嗎?
緊急求助!
祝大家新年快樂,萬事如意
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號