在初始化中增加了讀中斷識別寄存器 ,運行后不在一直中斷, 不知道原因,歡迎交流 :QQ54549122例子如下 : void InitCH438UART0( void ) { UINT16 div; UINT8 DLL, DLM;
/************************************************************************** 設置CH438串口0的寄存器 **************************************************************************/ UART0_Reset(); div = ( Fpclk >> 4 ) / CH438UART0_BPS; DLM = div >> 8; DLL = div & 0xff; WriteCH438Data( REG_LCR_ADDR, BIT_LCR_DLAB ); /* 設置DLAB為1 */ WriteCH438Data( REG_DLL_ADDR, DLL ); /* 設置波特率 */ WriteCH438Data( REG_DLM_ADDR, DLM ); WriteCH438Data( REG_FCR_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN ); /* 設置FIFO模式,觸發(fā)點為112字節(jié) */ WriteCH438Data( REG_LCR_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 ); /* 字長8位,1位停止位、無校驗 */ WriteCH438Data( REG_IER_ADDR, BIT_IER_IELINES | BIT_IER_IETHRE | BIT_IER_IERECV ); /* 使能中斷 */ Status = ReadCH438Data( REG_IIR_ADDR ); // 中斷識別寄存器 -------正確值:0x01 WriteCH438Data( REG_MCR_ADDR, BIT_MCR_OUT2|BIT_MCR_RTS| BIT_MCR_DTR); /* 允許中斷輸出,DTR,RTS為1 | BIT_MCR_RTS | BIT_MCR_DTR */ WriteCH438Data(REG_FCR_ADDR,ReadCH438Data(REG_FCR_ADDR)| BIT_FCR_TFIFORST|BIT_FCR_RFIFORST); /* 清空FIFO中的數(shù)據(jù) */ }