【求助帖】代码控制
![null](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/avatar/pre/v1/000008916_avatar_big.jpg)
为何跑程序的时候只能执行转弯部分?直行部分得把转弯部分注释了 才能用? 求大神解答!
PitchSpeed=RC.rc.ch1-1024;
AdvanceSpeed=RC.rc.ch3-1024;
RotateSpeed=RC.rc.ch2-1024;
if(AdvanceSpeed>0) //////直行部分
{ TIM8->CCR1=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)AdvanceSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_7);
GPIO_ResetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6);
}
else if(AdvanceSpeed<0)
{ TIM8->CCR1=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR2=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR3=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR4=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6);
GPIO_ResetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_7); ///低 高 反转
}
//对底盘的转弯控制
if(RotateSpeed>0) ///右转
{
TIM8->CCR1=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)RotateSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6);
GPIO_ResetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7);
}
else if(RotateSpeed<0)
{
TIM8->CCR1=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)-RotateSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7);
GPIO_ResetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6);
}
else if((RotateSpeed==0)&&(PitchSpeed==0))
{
TIM8->CCR1=0;
TIM8->CCR2=0;
TIM8->CCR3=0;
TIM8->CCR4=0;
}
PitchSpeed=RC.rc.ch1-1024;
AdvanceSpeed=RC.rc.ch3-1024;
RotateSpeed=RC.rc.ch2-1024;
if(AdvanceSpeed>0) //////直行部分
{ TIM8->CCR1=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)AdvanceSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)AdvanceSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_7);
GPIO_ResetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6);
}
else if(AdvanceSpeed<0)
{ TIM8->CCR1=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR2=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR3=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
TIM8->CCR4=(int)(300*(((float)(-AdvanceSpeed))/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6);
GPIO_ResetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_7); ///低 高 反转
}
//对底盘的转弯控制
if(RotateSpeed>0) ///右转
{
TIM8->CCR1=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)RotateSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)RotateSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6);
GPIO_ResetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7);
}
else if(RotateSpeed<0)
{
TIM8->CCR1=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR2=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR3=(int)(300*(((float)-RotateSpeed)/((float)660)));
TIM8->CCR4=(int)(300*(((float)-RotateSpeed)/((float)660)));
GPIO_SetBits(GPIOF, GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7);
GPIO_ResetBits(GPIOF, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6);
}
else if((RotateSpeed==0)&&(PitchSpeed==0))
{
TIM8->CCR1=0;
TIM8->CCR2=0;
TIM8->CCR3=0;
TIM8->CCR4=0;
}
请问这篇文章对你有用吗?
【求助帖】代码控制