这里写代码片
{
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
今日推荐
周排行