初级会员

- 积分
- 148
- 金钱
- 148
- 注册时间
- 2017-4-25
- 在线时间
- 27 小时
|

楼主 |
发表于 2018-1-18 11:13:14
|
显示全部楼层
少了些东西,而且DMA通道也配置错了改成以下就好了
这里只贴一路其他的有需要和我联系
TIM_DMACmd(TIM1,TIM_DMA_CC1|TIM_DMA_CC2|TIM_DMA_CC3,ENABLE);//在定时器初始化添加
tim1_dma_CH1();//在定时器初始化添加
void tim1_dma_CH1(void)
{
DMA_InitTypeDef DMA_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/**************DMAÅäÖÃ*****************/
DMA_DeInit(DMA2_Stream1);
while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}//μè′yDMA¿éÅäÖÃ
DMA_ClearITPendingBit(DMA2_Stream1,DMA_IT_FEIF1|DMA_IT_DMEIF1|DMA_IT_TEIF1|DMA_IT_HTIF1|DMA_IT_TCIF1);//Çå¿ÕDMA2_Stream1éÏËùóDÖD¶Ï±êÖ¾
DMA_InitStructure.DMA_Channel=DMA_Channel_6;
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)TIM1_CCR1_Address;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&sp[0];// SRC1_Buffer;
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;//Äú′æμ½íaéè
DMA_InitStructure.DMA_BufferSize =512;//DMA»o′æ′óD¡
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //íaéèμØÖ·2»±ä
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //Äú′æμØÖ·×ÔÔö
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;//16
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //16
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//Ñ-»·Ä£ê½
DMA_InitStructure.DMA_Priority =DMA_Priority_High; //DMA1ZóÅÏè¼¶
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//′æ′¢Æ÷í»·¢μ¥′Î′«êä
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//íaéèí»·¢μ¥′Î′«êä
DMA_Init(DMA2_Stream1, &DMA_InitStructure);
DMA_DoubleBufferModeConfig(DMA2_Stream1,(uint32_t)&SPWM[0],DMA_Memory_0);//Ë«»o3åÄ£ê½ÅäÖÃ
DMA_DoubleBufferModeCmd(DMA2_Stream1,ENABLE);//Ë«»o3åÄ£꽿aÆô
DMA_ITConfig(DMA2_Stream1 , DMA_IT_TC , ENABLE);
NVIC_InitStructure.NVIC_IRQChannel=DMA2_Stream1_IRQn; //¶¨ê±Æ÷2ÖD¶Ï
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //ÇàÕ¼óÅÏè¼¶1
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02; //×óóÅÏè¼¶2
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
DMA_Cmd(DMA2_Stream1, ENABLE);
}
//DMA2CH1ÖD¶Ï·tÎñoˉêy
void DMA2_Stream1_IRQHandler(void)
{
int i;
if(DMA_GetFlagStatus(DMA2_Stream1,DMA_IT_TCIF1)==SET) //òç3öÖD¶Ï
{
for(i=0;i<512;i++)SPWM[i]=sp[i];
DMA_ClearITPendingBit(DMA2_Stream1,DMA_IT_TCIF1); //Çå3yÖD¶Ï±ê־λ
}
}
|
|