串口配置如下
UART8_Handler.Instance = UART8;
UART8_Handler.Init.BaudRate = 115200;
UART8_Handler.Init.WordLength = UART_WORDLENGTH_8B;
UART8_Handler.Init.StopBits = UART_STOPBITS_1;
UART8_Handler.Init.Parity = UART_PARITY_NONE;
UART8_Handler.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UART8_Handler.Init.Mode = UART_MODE_TX_RX;
HAL_UART_Init(&UART8_Handler);
__HAL_RCC_UART8_CLK_ENABLE();
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==UART8)
{
HAL_UART_Receive_DMA(&UART8_Handler,UART8_Receive_Buffer,10);
}
}
dma配置如下
__HAL_RCC_DMA1_CLK_ENABLE();
__HAL_LINKDMA(&UART8_Handler,hdmarx,UART8_RxDMAHandler);
UART8_RxDMAHandler.Instance=DMA1_Stream6;
UART8_RxDMAHandler.Init.Channel=DMA_CHANNEL_5;
UART8_RxDMAHandler.Init.Direction=DMA_PERIPH_TO_MEMORY;
UART8_RxDMAHandler.Init.PeriphInc=DMA_PINC_DISABLE;
UART8_RxDMAHandler.Init.MemInc=DMA_MINC_ENABLE;
UART8_RxDMAHandler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE;
UART8_RxDMAHandler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE;
UART8_RxDMAHandler.Init.Mode=DMA_NORMAL;
UART8_RxDMAHandler.Init.Priority=DMA_PRIORITY_MEDIUM;
UART8_RxDMAHandler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
UART8_RxDMAHandler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;
UART8_RxDMAHandler.Init.MemBurst=DMA_MBURST_SINGLE;
UART8_RxDMAHandler.Init.PeriphBurst=DMA_PBURST_SINGLE;
HAL_DMA_DeInit(&UART8_RxDMAHandler);
HAL_DMA_Init(&UART8_RxDMAHandler);
__HAL_DMA_ENABLE(&UART8_RxDMAHandler);
HAL_UART_Receive_DMA(&UART8_Handler, UART8_Receive_Buffer, 10);
然后 串口八寄存器的rdr里有数 但是dma数组里不刷新
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>