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



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
李志猛
1楼-- · 2019-07-20 16:46
ssis909 发表于 2017-3-29 18:02
楼主解决没有,我的DMA接收配置和你的一模一样,接收的数据个数是正确的,但是接收数据全为0,不知怎么回事

循环模式设置成正常模式 就正常了
whyviking
2楼-- · 2019-07-20 19:51
 精彩回答 2  元偷偷看……
whyviking
3楼-- · 2019-07-20 23:52
 精彩回答 2  元偷偷看……
ssis909
4楼-- · 2019-07-21 01:09
楼主解决没有,我的DMA接收配置和你的一模一样,接收的数据个数是正确的,但是接收数据全为0,不知怎么回事
正点原子
5楼-- · 2019-07-21 05:29
帮顶
李志猛
6楼-- · 2019-07-21 10:39
 精彩回答 2  元偷偷看……

一周热门 更多>