不使用DMA中断时取消中断勾选
UART_Start_Receive_DMA( &huart2 ,DMARxData, 100 );
不想用中断,用打开串口不开中断,直接用DMA搬运
uint8_t DMARxData[100];
uint8_t DMAOKF ; //DMA接收完成标志
void DMAUARTRec()
{
static uint32_t ndtrtest = 0 ; //读取DMA的数据
static uint32_t DMAtim = 0 ;
static uint32_t DMAtimF = 0 ;
if(ndtrtest != DMA1_Stream5->NDTR )
{
ndtrtest = DMA1_Stream5->NDTR ;
DMAtim = HAL_GetTick() ;
DMAtimF = 1 ;
}
else if(DMAtimF == 1 && (HAL_GetTick() > (DMAtim + 2)))
{//100ms判断接收完成
DMAtimF = 0 ; //接收完成处理
HAL_UART_DMAStop(&huart2) ;
UART_Start_Receive_DMA( &huart2 ,DMARxData, 100 );//启动DMA接收
DMAOKF = 1 ;
}
}