回复【5楼】正点原子:
---------------------------------
原子哥,也可以不用中断形式的,直接DMA传输就好了
[mw_shl_code=c,true] /* DMA Channel3 configuration ------V相占空比DMA通道----------------------------------------*/
DMA_DeInit(DMA1_Channel3);
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)TIM1_CCR2_Address; //外设地址
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)(hCCDmaBuffCh2); //存储器地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //从存储器读
DMA_InitStructure.DMA_BufferSize = 4; //传输数量
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //不执行外设地址增量操作
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; //优先级:高
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //非存储器到存储器模式
DMA_Init(DMA1_Channel3, &DMA_InitStructure);
/* Enable DMA Channel3 */
//DMA_Cmd(DMA_Channel3, ENABLE);
DMA_Cmd(DMA1_Channel3, DISABLE);[/mw_shl_code]
这只是某一桥壁DMA配置,只需要修改(u32)(hCCDmaBuffCh2)里的值,对应的PWM占空比就会相应改变 |