1. 设定CCR4的DMA通道,并且设定此时Timer1的preload为禁止状态;
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);
2. 在CCR4比较值部分产生DMA事件;
DMA_InitStructure.DMA_PeripheralBaseAddr= (uint32_t)(&(TIM1-》CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr= (uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize= 2u;
…。
TIM_DMACmd(TIM1,TIM_DMA_CC4,ENABLE);
3. 在1点上将CCR1数据直接修改为周期数据+1;
4. 在2点上将CCR1数据修改为CCR1’的数据;
5. 时间计算上按照上面的图示设定,中间凹陷时间为两边补充波形时间之和。
波形移位变形
1. 设定Timer1的update事件的DMA通道
DMA_InitStructure.DMA_PeripheralBaseAddr =(uint32_t)(&(TIM1-》CCR1));
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)(uint32_t)(hDmaBuff2);
DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 2u;
……
TIM_DMACmd(TIM1,TIM_DMA_Update,ENABLE);
2. 在1点上更新CCR1数据为CCR1数据;
3. 在2点上更新CCR1数据为CCR1’数据;
4. 保证前后的移位时间相同。
原作者: stmcu STM32单片机