CH438 的中斷OUT2 一直恒為低電平 是什么原因,外部有串口不斷的傳輸。但是為啥OUT2恒為低電平。這樣沒(méi)法判斷啊
MCR是可寫(xiě)寄存器,手動(dòng)置1后再試下呢,正常在初始化部分OUT 位就會(huì )置1?
再初始化部分 對OUT2置1了。
WriteCH438Data( REG_MCR3_ADDR, BIT_MCR_OUT2 /*| BIT_MCR_RTS | BIT_MCR_DTR */ );? ?這句語(yǔ)句一運行完,OUT2就恒定為低電平了。
void InitCH438UART3( void )? ? ? ?
{
? ? Uint16 div;
? ? Uint8 DLL, DLM;
/**************************************************************************
? ? ? ? ? 設置CH438串口3的寄存器
**************************************************************************/
//? ? UART3_Reset();
? ? div = ( Fpclk >> 4 ) / CH438UART3_BPS;
? ? DLM = div >> 8;
? ? DLL = div & 0xff;
? ? WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_DLAB );? ? /* 設置DLAB為1 */
? ? WriteCH438Data( REG_DLL3_ADDR, DLL );? ? ? ? ? ? ?/* 設置波特率 */
? ? WriteCH438Data( REG_DLM3_ADDR, DLM );
? ? //WriteCH438Data( REG_FCR3_ADDR, BIT_FCR_RECVTG1 | BIT_FCR_RECVTG0 | BIT_FCR_FIFOEN );? ? /* 設置FIFO模式,觸發(fā)點(diǎn)為112字節 */
? ? WriteCH438Data( REG_LCR3_ADDR, BIT_LCR_WORDSZ1 | BIT_LCR_WORDSZ0 | BIT_LCR_PAREN | BIT_LCR_PARMODE0);? ? ? ? ? ? ? ? ? ? ?/* 字長(cháng)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ā)現好像是 fifo溢出以后,清FIFO的需要一定的時(shí)間。