粗略限定电平持续时间,和测量脉冲周期(恒定周期)

这里写代码片
{
    if(SA_READ==0)
    { 
      if(flag_high==1)//下降沿
      {
        flag_high=0;
        SA_delay=0;//脉冲边沿清零
        Counter = TIM2_GetCapture();
        if(Counter>50000)//高电平时间大于50ms
        {
          //LED_ON;
          DUTY=0;
          set_pwmh();
        }
        if(Counter<14800)
        {
          // LED_OFF;
          DUTY--;
          if(DUTY<3)//防止跑偏
            DUTY=2;
          set_pwmh();
        }
        if(Counter>15200 && Counter<20000)
        {
          // LED_ON;
          DUTY++;
          if(DUTY>=60)
            DUTY=0;
          set_pwmh();
        }
        TIM2_SetCounter(0);
      }
      flag_low=1;
    }  
    if(SA_READ)
    { 
      if(flag_low==1)//上升沿
      {
        flag_low=0;
        SA_delay=0;//脉冲边沿清零
        Counter = TIM2_GetCapture();
        TIM2_SetCounter(0);
      }
      flag_high=1;
    }     
    if(SA_delay>3000)//高电平时间大于30ms
    {
      LED_REVERSE ;
      SA_delay=0;
      DUTY=0;
      set_pwmh();
    }
    SA_delay++;//(主程序加递增变量,脉冲边沿清零)
}

猜你喜欢

转载自blog.csdn.net/xiyancsdn/article/details/82628917
今日推荐