關(guān)于ch375庫的應(yīng)用

我在用ch375lib里的avr例子時(shí)候編譯filelibb加入庫CH375HFB.A時(shí)不能編譯,把庫換成libCH375HFD.A的時(shí)候就能編譯,請問是為什么,這兩個(gè)庫能通用嗎?

我是這樣將庫加進(jìn)去的 # Define all object files. OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) CH375HFB.A

# Define all listing files. LST = $(SRC:.c=.lst) $(ASRC:.S=.lst)

# Compiler flags to generate dependency files. GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d

我用的是ATmega32l單片機(jī)。


用libCH375HFD.A庫


我用filelibd里的exam6就可以初始化庫,但是用filelibb里的exam1的時(shí)候就不能初始化庫,用的是libCH375HFD.A庫,請問為什么?


主要看你用什么編譯器,F(xiàn)ILELIBB編譯器用的是ICCAVR,FILELIBD編譯器用的是AVR_GCC.兩個(gè)庫是不能通用的.


我現(xiàn)在可以初始化了,但是出現(xiàn)了下面的問題,這樣好像寫不進(jìn)去,我用的扇區(qū)方式,我開始定義h=0,Read_Byte_SPI();是讀取ad轉(zhuǎn)換的值,每次讀取八位。如果每讀一次就寫一次的話就能夠?qū)?shù)據(jù)寫進(jìn)去,但是當(dāng)我寫512個(gè)字節(jié)的時(shí)候就寫不進(jìn)去。我的單片機(jī)的ram是2k。請指點(diǎn)。

SIGNAL(SIG_INTERRUPT2) { UINT8 i; WriteToReg_ADC(0X38); CS_0; FILE_DATA_BUF[h]=Read_Byte_SPI(); FILE_DATA_BUF[h+1]=Read_Byte_SPI(); CS_1; h+=2; if(h==512) { h=0; mCmdParam.Write.mSectorCount=1; i = CH375FileWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); mCmdParam.Write.mSectorCount=0; i = CH375FileWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); } }


問題解決了,我定義的h的格式不正確,應(yīng)該定義為int型,而我定義成了char型的了。


還有一點(diǎn),0--511已經(jīng)是512個(gè)字節(jié)了,等到512再寫的話應(yīng)該會(huì)錯(cuò)位吧。


不錯(cuò)位啊,h每次加2,加到510的時(shí)候正好為511,然后h再加2就為512,此時(shí)讓h等于0,但并沒有給FILE_DATA_BUF賦值。當(dāng)h=512時(shí)的字節(jié)數(shù)也為512個(gè),為0——511。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频