我把程序換成中斷方式,低電平觸發(fā),跟蹤的時(shí)候發(fā)現(xiàn)程序無法相應(yīng)上位機(jī)發(fā)出的get device了,調(diào)試跟蹤的時(shí)候,發(fā)現(xiàn)連else if ( s & BIT_IF_TRANSFER ) { }...都進(jìn)不去,只是進(jìn)入了復(fù)位,然后再也無法進(jìn)入中斷了,不知道原因在什么地方。開始懷疑是相關(guān)標(biāo)志位沒清零,相關(guān)寄存器位未使能,后來都對(duì)了一遍,官方的例程是都做了這些處理的,不知道為題出現(xiàn)在何處?
我把程序換成中斷方式,低電平觸發(fā),跟蹤的時(shí)候發(fā)現(xiàn)程序無法響應(yīng)上位機(jī)發(fā)出的get device了,調(diào)試跟蹤的時(shí)候,發(fā)現(xiàn)連else if ( s & BIT_IF_TRANSFER ) { }...都進(jìn)不去,只是進(jìn)入了復(fù)位,然后再也無法進(jìn)入中斷了,不知道原因在什么地方。開始懷疑是相關(guān)標(biāo)志位沒清零,相關(guān)寄存器位未使能,后來都對(duì)了一遍,官方的例程是都做了這些處理的,不知道為題出現(xiàn)在何處?
實(shí)際上中斷和查詢方式是一樣的。這個(gè)你需要跟蹤下你的軟件。估計(jì)是你進(jìn)了外部中斷之后某些中斷標(biāo)志位未清除導(dǎo)致無法在進(jìn)中斷。
謝謝 我搞出來了 官方例程中else if ( s & BIT_IF_USB_SUSPEND ) { // USB總線掛起 Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_USB_SUSPEND ); // 清中斷標(biāo)志 Write374Byte( REG_SYS_CTRL, Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_OSCIL_OFF ); // 時(shí)鐘振蕩器停止振蕩,進(jìn)入睡眠狀態(tài) }
我把Write374Byte( REG_SYS_CTRL, Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_OSCIL_OFF );注釋掉就可以了 請(qǐng)問為什么例程里在這個(gè)位置加這一句?還有就是我這種做法正確么
加這個(gè)的目的是在采用外供電的時(shí)候,USB從計(jì)算機(jī)上拔出之后可以進(jìn)入睡眠狀態(tài)。
好的,總之問題是解決了。感謝貴公司技術(shù)耐心講解