谢谢你了
现在将定时器配置为
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle;
中断配置为
TIM_ITConfig(TIM4,TIM_IT_CC1|TIM_IT_CC2|TIM_IT_CC3,ENABLE );
中断函数为
void TIM4_IRQHandler(void) //TIM4中断
{
static u8 TIM4_CH1_Flag=0,TIM4_CH2_Flag=0,TIM4_CH3_Flag=0;
if(TIM_GetITStatus(TIM4, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM4,TIM_IT_CC1);
if(TIM4_CH1_Flag==0)
{
TIM4->CCR1=500;//终点数 高电平时间为:终点数-起始数
TIM4_CH1_Flag=1;
}
else
{
TIM4->CCR1=0;//起始数 120°=0
TIM4_CH1_Flag=0;
}
}
if(TIM_GetITStatus(TIM4, TIM_IT_CC2) != RESET)
{
TIM_ClearITPendingBit(TIM4,TIM_IT_CC2);
if(TIM4_CH2_Flag==0)
{
TIM4->CCR2=1700;//终点数
TIM4_CH2_Flag=1;
}
else
{
TIM4->CCR2=1200;//起始数 120°=1200
TIM4_CH2_Flag=0;
}
}
(TIM_GetITStatus(TIM4, TIM_IT_CC3) != RESET)
{
TIM_ClearITPendingBit(TIM4,TIM_IT_CC3);
if(TIM4_CH3_Flag==0)
{
TIM4->CCR3=2900;//终点数
TIM4_CH3_Flag=1;
}
else
{
TIM4->CCR3=2400;//起始数 120°=2400
TIM4_CH3_Flag=0;
}
}
}
已经可以实现任意相位任意占空比了 |