Prechádzať zdrojové kódy

CPU工程更新:
1.使能串口overrun异常中断功能(异常时打印提示信息);

helen 6 mesiacov pred
rodič
commit
1419323f0f

+ 7 - 3
amt630hv160-freertos-beta/ArkmicroFiles/libcpu-amt630hv160/source/uart.c

@@ -214,6 +214,7 @@ static void vUart485IntHandler(void *param)
 {
 	UartPort_t *uap = param;
 	uint32_t iir;
+	uint32_t lsr;
 
 	iir = readl(uap->regbase + UART485_IIR);
 	switch (iir & UART485_IIR_IID_MASK) {
@@ -221,13 +222,16 @@ static void vUart485IntHandler(void *param)
 		xUart485TxChars(uap, 1);
 		break;
 	case UART485_IIR_IID_REV_DATA_AVAIL:
-	case UART485_IIR_IID_REV_LINE_STATUS:
 	case UART485_IIR_IID_CHAR_TIMEOUT:
 		iUart485RxChars(uap);
 		break;
 	case UART485_IIR_IID_BUSY_DETECT:
 		iir = readl(uap->regbase + UART485_USR); //clear busy interrupt
 		break;
+	case UART485_IIR_IID_REV_LINE_STATUS:
+		lsr = readl(uap->regbase + UART485_LSR);
+		printf("Error lsr=0x%x\n", lsr);
+		break;
 	}
 }
 
@@ -351,8 +355,8 @@ void vUartInit(UartPort_t *uap, uint32_t baud, uint32_t flags)
 	//set fifo
 	writel((2 << 6) | (3 << 4) | 7, uap->regbase + UART485_FCR);
 
-	//enable rx and err interrupt
-	writel((1 << 4) | 1, uap->regbase + UART485_IER);
+	//enable rx and rls interrupt
+	writel((1 << 2) | 1, uap->regbase + UART485_IER);
 
 	//设置通信模式全双工还是半双工
 	//485mode disable