现在可以用编码器读取计数器的值了,但是怎么去测速呢?

2019-08-14 18:49发布

编码器怎么去测速呢?怎么通过PWM去控制直流电机呢?求教各位大神!最近在用直流电机,希望大家可以帮帮忙!谢谢啦!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
张晓斌
2019-08-17 05:26
回复【21楼】joe_knight:
---------------------------------
void TIM2_IRQHandler(void)
{    
  u8 count=0;
   if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET)
   {
      
    if(count==0)//第一次进入中断后
    {
        TIM3_Cap_Init();//输入捕获模式
        count++;  
    }        
    if(count==2)//第二次进入中断
    {
        count=0;
        TIM_Cmd(TIM3,DISABLE);
        M1=TIM3->CNT;
        TIM3->CNT=0;//计数器清零
        TIM3_Cap_Init();  
    }             
   TIM_ClearITPendingBit(TIM2,TIM_IT_Update); 
   }   
}
void TIM3_IRQHandler(void)
{
    u8 i=0;
    if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
        TIM_ClearFlag(TIM3,TIM_IT_Update);
    if(TIM_GetITStatus(TIM3,TIM_IT_CC1)!=RESET|TIM_GetITStatus(TIM3,TIM_IT_CC2)!=RESET)
    {   
        if(i==0)//第一次捕获
        {     
        TIM_Cmd(TIM3,DISABLE);
        TIM3->CNT=0;
        TIM_Encoder();
        TIM_Cmd(TIM5,ENABLE);
        i++;
        }
        if(i==2)//第二次捕获
        {
           i=0;
          TIM_Cmd(TIM5,DISABLE);
          M2=TIM5->CNT;  
        }
        TIM_ClearFlag(TIM3,TIM_IT_CC1);
        TIM_ClearFlag(TIM3,TIM_IT_CC2);
    }
}
我是按照你给的思路写的啊,但结果还是一样的。唉。。。对自己失望了。

一周热门 更多>