void UART0Isr(void)
{
uint32_t intStatus = UARTIntStatus(SOC_UART_0_REGS);
IntEventClear(SYS_INT_UART0_INT);
UARTIntDisable(SOC_UART_0_REGS, intFlag);
UART0_CloseDMA();
switch(intStatus)
{
// Timeout interrupt
case UART_INTID_CTI:
{
while(TRUE == UARTCharsAvail(SOC_UART_0_REGS))
{
UARTCharGetNonBlocking(SOC_UART_0_REGS);
}
break;
}
// Receive error
case UART_INTID_RX_LINE_STAT:
{
while(UARTRxErrorGet(SOC_UART_0_REGS))
{
UARTCharGetNonBlocking(SOC_UART_0_REGS);
}
break;
}
default:
break;
}
UART0_OpenDMA();
UARTIntEnable(SOC_UART_0_REGS, intFlag);
return;
}
void UART0_DMA_Callback(unsigned int tccNum, unsigned int status)
{
UART0_CloseDMA();
memset(rcvBuf, 0, RX_BUFFER_SIZE);
dmaFlags = 1;
}想接收不定长数据,但是目前只有接收定长数据的UART+DMA;
尝试了一下开启串口超时中断与DMA传输,但是进不去UART回调函数,DMA回调函数也进不去。
代码如上。