我將愿函數(shù)修改了下,,懷疑這里有問題。串口中斷的時候flag置1, ReadUART()時候flag置一,不知道該如何修改,在關(guān)閉文件的時候一直是失敗,求幫助。?。? UINT8 Query376Interrupt( void ) { if ( Flag==1 ) { /* 如果未連接CH376的中斷引腳則查詢串口中斷狀態(tài)碼 */ {Flag = 0; return( TRUE );} } else return( FALSE ); } UINT8 ReadUART(void) { Flag=0; return RxBuf; }[Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot][Emot]20[/Emot]
ReadUART應該這樣寫吧: UINT8 ReadUART(void) { Flag=1; return RxBuf; } 關(guān)閉文件一直失敗是沒等到中斷嗎?
ReadUART()這是一個讀取串口中斷數(shù)據(jù)的函數(shù),串口讀取時,F(xiàn)lag就會置一 下面是中斷函數(shù) #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { RxBuf = UCA0RXBUF; Flag=1;//有數(shù)據(jù)產(chǎn)生 }
我現(xiàn)在發(fā)送CH376FileClose(TRUE);如果有返回數(shù)據(jù)中斷對flag置一,但是flag一直是0,而且我沒有讀取過數(shù)據(jù),那就應該是一直沒有等到中斷,,所以文件一直關(guān)不了,,究竟要怎么關(guān), 網(wǎng)上怎么好像說是要把中斷引腳拿來檢測?求解答?。?!
你的流程有點問題,那個查詢串口中斷狀態(tài)碼你不需要讀取,只需要一直等待中斷碼,等到后flag=1,然后進入Query376Interrupt將Flag = 0,然后通過CH376GetIntStatus查詢中斷狀態(tài)。 查詢中斷引腳是另一種處理方式,比你的方法簡單一些,直接查詢INT#引腳的電平即可,如果是低電平,直接通過CH376GetIntStatus查詢中斷狀態(tài)并撤銷中斷。
。額。。我現(xiàn)在將源碼完全移植了一遍。在運行到InitCH376Host.中的 xWriteCH376Cmd( CMD11_CHECK_EXIST ); /* 測試單片機與CH376之間的通訊接口 */ xWriteCH376Data( 0x65 ); res = xReadCH376Data( ); 一運行完,我的單片機就重啟了,十分詭異,,我定斷點試過很多次,就是在這個地方。。請問下,這是為什么, 當把模塊拆除就沒有問題。。