初级会员

- 积分
- 118
- 金钱
- 118
- 注册时间
- 2016-3-22
- 在线时间
- 122 小时
|

楼主 |
发表于 2017-9-12 16:16:24
|
显示全部楼层
void MYDMA_Config(DMA_Stream_TypeDef *DMA_Streamx,u8 chx,u32 par,u32 mar,u16 ndtr)
{
DMA_TypeDef *DMAx;
u8 streamx;
DMAx=DMA2;
RCC->AHB1ENR|=1<<22;//DMA2ê±Öóê1Äü
while(DMA_Streamx->CR&0X01);//μè′yDMA¿éÅäÖÃ
streamx=(((u32)DMA_Streamx-(u32)DMAx)-0X10)/0X18; //μÃμ½streamí¨μàoÅ
if(streamx>=6)DMAx->HIFCR|=0X3D<<(6*(streamx-6)+16); //Çå¿Õ֮ǰ¸ÃstreaméÏμÄËùóDÖD¶Ï±êÖ¾
else if(streamx>=4)DMAx->HIFCR|=0X3D<<6*(streamx-4); //Çå¿Õ֮ǰ¸ÃstreaméÏμÄËùóDÖD¶Ï±êÖ¾
else if(streamx>=2)DMAx->LIFCR|=0X3D<<(6*(streamx-2)+16);//Çå¿Õ֮ǰ¸ÃstreaméÏμÄËùóDÖD¶Ï±êÖ¾
else DMAx->LIFCR|=0X3D<<6*streamx; //Çå¿Õ֮ǰ¸ÃstreaméÏμÄËùóDÖD¶Ï±êÖ¾
DMA_Streamx-> AR=par; //DMAíaéèμØÖ·
DMA_Streamx->M0AR=mar; //DMA ′æ′¢Æ÷0μØÖ·
DMA_Streamx->NDTR=ndtr; //DMA ′æ′¢Æ÷0μØÖ·
DMA_Streamx->CR=0; //Ïèè«2¿¸′λCR¼Ä′æÆ÷Öμ
DMA_Streamx->CR|=2<<6; //′æ′¢Æ÷μ½íaéèÄ£ê½
DMA_Streamx->CR&=~(0<<8); //·ÇÑ-»·Ä£ê½(¼′ê1óÃÆÕí¨Ä£ê½)
DMA_Streamx->CR|=1<<9; //íaéè·ÇÔöá¿Ä£ê½
DMA_Streamx->CR|=1<<10; //′æ′¢Æ÷Ôöá¿Ä£ê½
DMA_Streamx->CR&=~(0<<11); //íaéèêy¾Y3¤¶è:8λ
DMA_Streamx->CR&=~(0<<13); //′æ′¢Æ÷êy¾Y3¤¶è:8λ
DMA_Streamx->CR|=1<<17; //ÖDμèóÅÏè¼¶
DMA_Streamx->CR&=~(0<<21); //íaéèí»·¢μ¥′Î′«êä
DMA_Streamx->CR&=~(0<<23); //′æ′¢Æ÷í»·¢μ¥′Î′«êä
DMA_Streamx->CR|=(u32)chx<<25;//í¨μàÑ¡Ôñ
}
//¿aÆôò»′ÎDMA′«êä
//DMA_Streamx MAêy¾Yá÷,DMA1_Stream0~7/DMA2_Stream0~7
//ndtr:êy¾Y′«êäá¿
void MYDMA_Enable(DMA_Stream_TypeDef *DMA_Streamx,u16 ndtr)
{
DMA_Streamx->CR&=~(1<<0); //1رÕDMA′«êä
while(DMA_Streamx->CR&0X1); //è·±£DMA¿éòÔ±»éèÖÃ
DMA_Streamx->NDTR=ndtr; //DMA ′æ′¢Æ÷0μØÖ·
DMA_Streamx->CR|=1<<0; //¿aÆôDMA′«êä
} |
|