就用串口中断就可以了,串口使用DMA功能,Uart_EnableFunc(M0P_UART1,UartDmaRxFunc); //使能DMA接收
源地址和目标地址,源地址就是串口的基地址,目标地址就是你要接收缓存的BUF。另外想请教一下,如何判断一包数据长度,寄存器里面没有这样的设置。
因为我现在的串口DMA无法获取有效数据长度。胡工,指点一下。我是华大代理商Mson
if(Uart_GetStatus(M0P_UART1, UartRC)) //UART1数据接收
{
Uart_ClrStatus(M0P_UART1, UartRC); //清中断状态位
// Dma_DisableChannel(DmaCh0);
Dma_SetTransferCnt(DmaCh0,512);
Dma_SetDestinationAddress(DmaCh0,(uint32_t)&u8RxData[0]);
Dma_SetSourceAddress(DmaCh0,0x40000100);
dma_inx = pstcDmaCfg->enSrcBcTcReloadCtl;//pstcDmaCfg->u16TransferCnt;
Uart_Rx_Flag = 0xF1;
;
// Uart_ClrIsr(M0P_UART1);
// Dma_EnableChannel(DmaCh0);
}
|