我的單片機是AVR MEGA16,開發(fā)環(huán)境為ICCAVR,用EXAM6的.C中的程序,連接庫的方法是按照論壇上面提示的方法做的,結(jié)果編譯時報錯:undefined symbol '_xReadCH375Cmd'。 CH375HF.PDF中也沒有找到要在外部實現(xiàn)xReadCH375Cmd的說明, 不知道這類信息在什么地方能找到
你要定義一下查詢的中斷引腳,例如: #define CH375_INT_WIRE ( PINB & 0x10 ) /* PINB.4, CH375的中斷線INT#引腳,連接CH375的INT#引腳,用于查詢中斷狀態(tài) */ 否則的話要寫讀命令的函數(shù). 你在程序中加上就可以了
CH375_INT_WIRE 已經(jīng)定義過。 感覺問題出在“#define CH375HF_NO_CODE 1”上面: 在CH375HFB.H中定義過之后,undefined symbol '_xReadCH375Cmd'問題解決,但是又出現(xiàn)了 undefined symbol '_CH375LibInit'的錯誤 如果不定義 CH375HF_NO_CODE,又會重復(fù)定義; 定義CH375HF_NO_CODE,程序則只是聲明函數(shù),整個工程沒有函數(shù)定義
有個例子程序: http://www.findthetime.net/bbs/View.asp?T=1&S=101&I=29331 請參考
用帖子上的辦法我可以編譯通過 我現(xiàn)在是多個源程序需要包含庫的頭文件 頭文件中有這么一段話: /* 該頭文件可以為CH375子程序庫分配必要的I/O及內(nèi)存資源,并產(chǎn)生必要的與硬件有關(guān)的目標代碼, 如果該文件是被工程項目的多個源程序包含作為頭文件,那么應(yīng)該只允許一個頭文件分配資源和產(chǎn)生代碼, 除此之外的頭文件應(yīng)該被事先定義CH375HF_NO_CODE,從而禁止該頭文件產(chǎn)生重復(fù)的目標代碼,例如: #define CH375HF_NO_CODE 1 #include CH375HF?.H */ “除此之外的頭文件應(yīng)該被事先定義CH375HF_NO_CODE”應(yīng)該怎么理解,怎么實現(xiàn)呢?
理解如下:如果庫頭文件被多個文件包含,那么除其中一個之外,其余文件包含頭文件時,需要在#include CH375HF?.H之前定義:#define CH375HF_NO_CODE 1