CH438 的中斷OUT2 一直恒為低電平 是什么原因,外部有串口不斷的傳輸。但是為啥OUT2恒為低電平。這樣沒法判斷啊
MCR是可寫寄存器,手動置1后再試下呢,正常在初始化部分OUT 位就會置1?
再初始化部分 對OUT2置1了。
WriteCH438Data( REG_MCR3_ADDR, BIT_MCR_OUT2 /*| BIT_MCR_RTS | BIT_MCR_DTR */ );? ?這句語句一運行完,OUT2就恒定為低電平了。
void InitCH438UART3( void )? ? ? ?
{
? ? Uint16 div;
? ? Uint8 DLL, DLM;
/**************************************************************************
? ? ? ? ? 設(shè)置CH438串口3的寄存器
**************************************************************************/
//? ? UART3_Reset();
? ? div = ( Fpclk >> 4 ) / CH438UART3_BPS;
? ? DLM = div >> 8;
? ? DLL = div & 0xff;
? ? WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_DLAB );? ? /* 設(shè)置DLAB為1 */
? ? WriteCH438Data( REG_DLL3_ADDR, DLL );? ? ? ? ? ? ?/* 設(shè)置波特率 */
? ? WriteCH438Data( REG_DLM3_ADDR, DLM );
? ? //WriteCH438Data( REG_FCR3_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN );? ? /* 設(shè)置FIFO模式,觸發(fā)點為112字節(jié) */
? ? WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 | BIT_LCR_PAREN | BIT_LCR_PARMODE0);? ? ? ? ? ? ? ? ? ? ?/* 字長8位,1位停止位、偶校驗 */
? ? WriteCH438Data( REG_IER3_ADDR, /*BIT_IER_IEMODEM |*/ BIT_IER1_CK2X | /*BIT_IER_IELINES | BIT_IER_IETHRE |*/ BIT_IER_IERECV );? ? /* 使能中斷 */
? ? WriteCH438Data( REG_MCR3_ADDR, BIT_MCR_OUT2 /*| BIT_MCR_RTS | BIT_MCR_DTR */ );? ? ? ? ? ? ? /* 允許中斷輸出,DTR,RTS為1 */
? ? //WriteCH438Data(REG_FCR3_ADDR,ReadCH438Data(REG_FCR3_ADDR)| BIT_FCR_TFIFORST|BIT_FCR_RFIFORST);
? ? /* === 20240827 === */
? ? WriteCH438Data(REG_FCR3_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_TFIFORST | BIT_FCR_RFIFORST | BIT_FCR_FIFOEN);
}
最終發(fā)現(xiàn)好像是 fifo溢出以后,清FIFO的需要一定的時間。