void BSP_usartinit(void)
{
//UART8
UART8_Handler.Instance = UART8;
UART8_Handler.Init.BaudRate = 9600;
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_UART_Receive_IT(&UART8_Handler, (uint8_t *)Handle_Buff, 13);
}
如上 是我串口的源码
__HAL_RCC_DMA1_CLK_ENABLE();
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_CIRCULAR;
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_LINKDMA(&UART8_Handler,hdmarx,UART8_RxDMAHandler);
HAL_NVIC_SetPriority(DMA1_Stream6_IRQn,2,2);
HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn);
//HAL_DMA_RegisterCallback(&UART8_RxDMAHandler, HAL_DMA_XFER_CPLT_CB_ID, TransferComplete);
HAL_UART_Receive_DMA(&UART8_Handler,Handle_DAM_Buff,11);
//HAL_DMA_Start_IT(&UART8_RxDMAHandler, (uint32_t)sss, (uint32_t)&Handle_Buff, 3);
如上 是我DMA的设置,按理说,应该第一次电脑给串口发数,数组Handle_DAM_Buff里面的值应该变才对,可为什么数组里面的值没变
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
循环模式设置成正常模式 就正常了
一周热门 更多>