理想的波形应该是占空比30%,但却无法进入中断,始终为50%,比较值没有改变,麻烦原子哥和各位帖友看看找找问题所在

2019-08-11 17:19发布

本帖最后由 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);
                        }
               
                }

        }



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
275891381
1楼-- · 2019-08-11 18:56
samk 发表于 2017-10-30 11:22
非常感谢你的指出,但我改了以后调试,还是跟原来的一样的pwm信号,是不是确实没进入中短?

你这还有定时器2的TIM_ClearFlag(TIM2, TIM_FLAG_CC1|TIM_FLAG_CC2);
你还是好好在检查下再弄,确保代码没问题再看看中断为啥没进
275891381
2楼-- · 2019-08-11 19:52
本帖最后由 275891381 于 2017-10-30 10:27 编辑

if(ccr2==2000)
{
          ccr2=2600;
          TIM_SetCompare1(TIM3,ccr2);
}
if(ccr2==2600)
{
         ccr2=2000;
        TIM_SetCompare1(TIM3,ccr2);
}

你这第一个if执行了,第二个就满足了,ccr2还是2000呀,d第二个用else吧
samk
3楼-- · 2019-08-11 23:44
275891381 发表于 2017-10-30 10:24
if(ccr2==2000)
{
          ccr2=2600;

非常感谢你的指出,但我改了以后调试,还是跟原来的一样的pwm信号,是不是确实没进入中短?

一周热门 更多>