我将愿函数修改了下,,怀疑这里有问题。串口中断的时候flag置1, ReadUART()时候flag置一,不知道该如何修改,在关闭文件的时候一直是失败,求帮助。!! UINT8 Query376Interrupt( void ) { if ( Flag==1 ) { /* 如果未连接CH376的中断引脚则查询串口中断状态码 */ {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; } 关闭文件一直失败是没等到中断吗?
ReadUART()这是一个读取串口中断数据的函数,串口读取时,Flag就会置一 下面是中断函数 #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { RxBuf = UCA0RXBUF; Flag=1;//有数据产生 }
我现在发送CH376FileClose(TRUE);如果有返回数据中断对flag置一,但是flag一直是0,而且我没有读取过数据,那就应该是一直没有等到中断,,所以文件一直关不了,,究竟要怎么关, 网上怎么好像说是要把中断引脚拿来检测?求解答!!!
你的流程有点问题,那个查询串口中断状态码你不需要读取,只需要一直等待中断码,等到后flag=1,然后进入Query376Interrupt将Flag = 0,然后通过CH376GetIntStatus查询中断状态。 查询中断引脚是另一种处理方式,比你的方法简单一些,直接查询INT#引脚的电平即可,如果是低电平,直接通过CH376GetIntStatus查询中断状态并撤销中断。
。额。。我现在将源码完全移植了一遍。在运行到InitCH376Host.中的 xWriteCH376Cmd( CMD11_CHECK_EXIST ); /* 测试单片机与CH376之间的通讯接口 */ xWriteCH376Data( 0x65 ); res = xReadCH376Data( ); 一运行完,我的单片机就重启了,十分诡异,,我定断点试过很多次,就是在这个地方。。请问下,这是为什么, 当把模块拆除就没有问题。。