TIM_SR寄存器位判断语句可否这样写?(SPWM程序中的)

2019-08-16 21:47发布

TIM1_PWM_Init(720,999);
  TIM_SetCompare2(TIM1,1);                                                                       
  while(1)
{
          if( TIM_SR_CC2IF ==1 )  //*****************想比较CC2IF位是不是1,这样写进不去if。。???????
                        {
               
                          TIM_SetCompare1(TIM1,CCR1Value[i]);
                                i++;
                        }
               
                if(i>359)
                {
                        i=0;
                }   
}

本来想根据PWM例程写一个SPWM波的程序,TIM1的CH1用来产生PWM波,CH2用来作为CCR1赋新值的标志,当CC2IF为1时,就赋新的值给CCR1,但是想上述程序一样,进不去。
下面贴上全部的程序。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-16 23:52
TIM_SR_CC2IF 是个宏定义,根本不会变,所以你这是乱搞。  去看看ST的代码或者我们的库函数代码,看看别人怎么写的。就知道怎么搞了。
baiyu
2楼-- · 2019-08-17 01:09
好的,谢谢原子哥
baiyu
3楼-- · 2019-08-17 05:09
正点原子 发表于 2017-7-20 22:04
TIM_SR_CC2IF 是个宏定义,根本不会变,所以你这是乱搞。  去看看ST的代码或者我们的库函数代码,看看别人 ...

改成这样if( (TIM1->SR & 0x0002)== 0x0002  ),还是不行,昨天一晚上都在找这个做法,但是现在也还是不会  
baiyu
4楼-- · 2019-08-17 08:45
        改成这样了,但是仍没有实现功能,估计是程序其他部分有问题,谢谢原子哥
        TIM_SetCompare2(TIM1,1);       
          if( (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) )  
                {
                          TIM_SetCompare1(TIM1,CCR1Value[i]);
                                i++;
    }

一周热门 更多>