关于stm32F4dma问题

2019-07-20 17:00发布

void SD_DMA_Config(u32*mbuf,u32 bufsize,u32 dir)
{                 

  DMA_InitTypeDef  DMA_InitStructure;
       
        while (DMA_GetCmdStatus(DMA2_Stream3) != DISABLE){}//μè′yDMA¿éÅäÖÃ
               
  DMA_DeInit(DMA2_Stream3);//Çå¿Õ֮ǰ¸Ãstream3éÏμÄËùóDÖD¶Ï±êÖ¾
       

  DMA_InitStructure.DMA_Channel = DMA_Channel_4;  //í¨μàÑ¡Ôñ
  DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&SDIO->FIFO;//DMAíaéèμØÖ·
  DMA_InitStructure.DMA_Memory0BaseAddr = (u32)mbuf;//DMA ′æ′¢Æ÷0μØÖ·
  DMA_InitStructure.DMA_DIR = dir;//′æ′¢Æ÷μ½íaéèÄ£ê½
  DMA_InitStructure.DMA_BufferSize = 0;//êy¾Y′«êäá¿
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//íaéè·ÇÔöá¿Ä£ê½
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//′æ′¢Æ÷Ôöá¿Ä£ê½
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//íaéèêy¾Y3¤¶è:32λ
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//′æ′¢Æ÷êy¾Y3¤¶è:32λ
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;// ê1óÃÆÕí¨Ä£ê½
  DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;//×î¸ßóÅÏ輶
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;   //FIFOê1Äü      
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;//è«FIFO
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_INC4;//íaéèí»·¢4′Î′«êä
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_INC4;//′æ′¢Æ÷í»·¢4′Î′«êä
  DMA_Init(DMA2_Stream3, &DMA_InitStructure);//3õê¼»ˉDMA Stream

        DMA_FlowControllerConfig(DMA2_Stream3,DMA_FlowCtrl_Peripheral);//íaéèá÷¿ØÖÆ
         
  DMA_Cmd(DMA2_Stream3 ,ENABLE);//¿aÆôDMA′«êä         

}   
请教大家一个问题,DMA_InitStructure.DMA_BufferSize = 0这句代码我理解是数据长度,但是为什么赋值为0呢,而且程序能够正常运行,这是fatfs例程,我已经使能了dma模式,不是中断模式,是因为dma的fifo模式使能了吗,但是我查找相关资料没有对此的说明。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。