關(guān)于372的中斷問(wèn)題[求助]

372初始化都成功,能收到CMD_RET_SUCCESS,我將372掛在ARM的外部中斷2上,能進(jìn)入中斷,并正確接收/發(fā)送數(shù)據(jù),但有個(gè)問(wèn)題: 1.如果PC機(jī)發(fā)送幾個(gè)字節(jié),我在中斷程序里設(shè)置斷點(diǎn),372申請(qǐng)中斷后,ARM能接收到正確的長(zhǎng)度和正確的數(shù)據(jù),但會(huì)2次進(jìn)入中斷服務(wù)程序。當(dāng)?shù)?次進(jìn)入中斷服務(wù)程序時(shí),接收到的長(zhǎng)度是0,為什么PC發(fā)送1次,會(huì)兩次進(jìn)入中斷程序? 2.372能發(fā)送的數(shù)據(jù)包最大是4096個(gè)字節(jié),我現(xiàn)在需要PC機(jī)一次發(fā)送4096個(gè)字節(jié),但我在中斷程序里加上斷點(diǎn),372應(yīng)該是每64個(gè)字節(jié)申請(qǐng)1次中斷,一共申請(qǐng)64次中斷,但我發(fā)現(xiàn)只能收到3次中斷,前2次長(zhǎng)度是64個(gè)字節(jié),第3次是0個(gè)字節(jié)。

附上中斷處理程序:

void __irq IRQ_Eint2(void) { EXTINT = 0x04; // 清除EINT2中斷標(biāo)志 CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 獲取中斷狀態(tài)并取消中斷請(qǐng)求 */ InterruptStatus = CH375_RD_DAT_PORT( ); /* 獲取中斷狀態(tài) */ delay2us(); //延遲兩個(gè)微秒 switch (InterruptStatus) { /* 分析中斷狀態(tài)處理 */ case USB_INT_EP2_OUT: { /* 批量端點(diǎn)下傳成功 */ CH375_WR_CMD_PORT( CMD_RD_USB_DATA ); /* 從當(dāng)前USB中斷的端點(diǎn)緩沖區(qū)讀取數(shù)據(jù)塊,并釋放緩沖區(qū) */ delay2us(); //延遲2微秒后 length = CH375_RD_DAT_PORT( ); /* 首先讀取后續(xù)數(shù)據(jù)長(zhǎng)度 */ for ( i = 0; i < length; i ++ ) buffer[ i ] = CH375_RD_DAT_PORT( ); /* 接收數(shù)據(jù)包 */

case USB_INT_EP2_IN: { /* 批量數(shù)據(jù)發(fā)送成功,當(dāng)ARM向CH372發(fā)數(shù),如果成功,就進(jìn)入這個(gè)判斷分支 */ CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); /* 釋放當(dāng)前USB緩沖區(qū) */ break;} default: { /* 其它中斷,未用到,解鎖后退出即可 */ CH375_WR_CMD_PORT( CMD_UNLOCK_USB ); /* 釋放當(dāng)前USB緩沖區(qū) CH375_WR_CMD_PORT表示令CH372的A0=1,表示下面訪問(wèn)的是命令口 */ break;} }

VICVectAddr = 0; // 向量中斷結(jié)束 }

你第2次進(jìn)中斷,還是進(jìn)入的是批量端點(diǎn)下傳成功的中斷里面去嗎?正常情況下只有372接收到數(shù)據(jù)之后才將372的中斷線拉低,如果存在干擾的話,那是不會(huì)獲取到正確的中斷狀態(tài)的,你查下你第2次進(jìn)中斷的時(shí)候程序跑到哪去了


經(jīng)過(guò)測(cè)試: 2次進(jìn)入中斷程序后,讀InterruptStatus都等于0X02 (批量端點(diǎn)下傳成功) 具體是:PC發(fā)送7個(gè)字節(jié)后 InterruptStatus length buffer[] 第一次進(jìn)入中斷 02 7 正 確 第而次進(jìn)入中斷 02 0 由于length=0,buffer[]不賦值


hcn 麻煩來(lái)幫我一下,謝謝了。。。。為什么會(huì)有這個(gè)現(xiàn)象?


正在測(cè)試


已經(jīng)測(cè)試過(guò)了,我們這邊沒(méi)有什么問(wèn)題,我給你我改的程序,你可以參考,上位機(jī)就用CH372DEBUG來(lái)調(diào)試,下位機(jī)就用我給你的程序來(lái)調(diào)試看可以不可以


非常感謝。請(qǐng)問(wèn)程序在哪兒?


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

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