本帖最后由 samk 于 2017-10-30 14:16 编辑
extern u16 ccr1;
extern u16 ccr2;
void TIM3_IRQHandler(void) //TIM3ÖD¶Ï
{
if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) //¼ì2éÖ¸¶¨μÄTIMÖD¶Ï·¢éúóë·ñ:TIM ÖD¶ÏÔ′
{
TIM_ClearITPendingBit(TIM3, TIM_IT_CC1 ); //Çå3yTIMxμÄÖD¶Ï′y′|àíλ:TIM ÖD¶ÏÔ′
if(ccr2==2000)
{
ccr2=2600;
TIM_SetCompare1(TIM3,ccr2);
}
else if(ccr2==2600)
{
ccr2=2000;
TIM_SetCompare1(TIM3,ccr2);
}
}
if (TIM_GetITStatus(TIM3, TIM_IT_CC2) != RESET) //¼ì2éÖ¸¶¨μÄTIMÖD¶Ï·¢éúóë·ñ:TIM ÖD¶ÏÔ′
{
TIM_ClearITPendingBit(TIM3, TIM_IT_CC2 ); //Çå3yTIMxμÄÖD¶Ï′y′|àíλ:TIM ÖD¶ÏÔ′
if(ccr1==200)
{
ccr1=800;
TIM_SetCompare2(TIM3,ccr1);
}
else if(ccr1==800)
{
ccr1=200;
TIM_SetCompare2(TIM3,ccr1);
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你这还有定时器2的TIM_ClearFlag(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2);
你还是好好在检查下再弄,确保代码没问题再看看中断为啥没进
if(ccr2==2000)
{
ccr2=2600;
TIM_SetCompare1(TIM3,ccr2);
}
if(ccr2==2600)
{
ccr2=2000;
TIM_SetCompare1(TIM3,ccr2);
}
你这第一个if执行了,第二个就满足了,ccr2还是2000呀,d第二个用else吧
非常感谢你的指出,但我改了以后调试,还是跟原来的一样的pwm信号,是不是确实没进入中短?
一周热门 更多>