if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)
{
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}
else if(TIM_GetITStatus(TIM3,TIM_IT_CC1)==SET)
{
TIM_ClearITPendingBit(TIM3,TIM_IT_CC1);
if(FLAGNUML == 0)
{
CapValL1 = TIM_GetCapture1(TIM3);
FLAGNUML = 1;
}
else if(FLAGNUML == 1)
{
CapValL2 = TIM_GetCapture1(TIM3);
if(CapValL2 > CapValL1)
{
CapValL = CapValL2 - CapValL1;
}
else
{
CapValL = ((10000 - CapValL1) + CapValL2);
}
if((CapValL > 9)&&(CapValL < 14))
{
CapValL = 0;
FLAG_LEFT = 01;
FLAGNUML = 0;
}
else if((CapValL > 14)&&(CapValL < 18))
{
CapValL = 0;
FLAG_LEFT = 02;
FLAGNUML = 0;
}
}
}
这是我定时器中断的函数。
现在的问题是,红外接收头接收到的信号很好,但是我通过捕获信号,获得信号的周期,通过周期不同,赋予FLAG_LEFT不同的值,然后在主函数中调用FLAG_LEFT的值,这个值不同,则执行不同的指令,但是有时候会执行,有时候不执行。(ps。红外接收头一直可以收到清晰稳定的信号)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>