DMA实验失败

2019-07-20 15:12发布

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里面的值应该变才对,可为什么数组里面的值没变



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。