初级会员

- 积分
- 77
- 金钱
- 77
- 注册时间
- 2015-4-21
- 在线时间
- 0 小时
|
5金钱
各位大神,这是我利用STM32F10X战舰开发板实现对步进电机的控制,运行后,它会一直正转或反转,停不下来,该如何使得步进电机旋转一定角度就停下来??
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
if(step==1)
{
GPIO_SetBits(GPIOG, GPIO_Pin_2);
GPIO_ResetBits(GPIOG, GPIO_Pin_4);
GPIO_ResetBits(GPIOG, GPIO_Pin_6);
GPIO_ResetBits(GPIOG, GPIO_Pin_8);
if(flag==1) {step++;}
if(flag==0){step=8;}
}
else if(step==2){
GPIO_SetBits(GPIOG, GPIO_Pin_2);
GPIO_SetBits(GPIOG, GPIO_Pin_4);
GPIO_ResetBits(GPIOG, GPIO_Pin_6);
GPIO_ResetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==3){
GPIO_ResetBits(GPIOG, GPIO_Pin_2);
GPIO_SetBits(GPIOG, GPIO_Pin_4);
GPIO_ResetBits(GPIOG, GPIO_Pin_6);
GPIO_ResetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==4){
GPIO_ResetBits(GPIOG, GPIO_Pin_2);
GPIO_SetBits(GPIOG, GPIO_Pin_4);
GPIO_SetBits(GPIOG, GPIO_Pin_6);
GPIO_ResetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==5){
GPIO_ResetBits(GPIOG, GPIO_Pin_2);
GPIO_ResetBits(GPIOG, GPIO_Pin_4);
GPIO_SetBits(GPIOG, GPIO_Pin_6);
GPIO_ResetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==6){
GPIO_ResetBits(GPIOG, GPIO_Pin_2);
GPIO_ResetBits(GPIOG, GPIO_Pin_4);
GPIO_SetBits(GPIOG, GPIO_Pin_6);
GPIO_SetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==7){
GPIO_ResetBits(GPIOG, GPIO_Pin_2);
GPIO_ResetBits(GPIOG, GPIO_Pin_4);
GPIO_ResetBits(GPIOG, GPIO_Pin_6);
GPIO_SetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step++;}
if(flag==0){step--;}
}
else if(step==8){
GPIO_SetBits(GPIOG, GPIO_Pin_2);
GPIO_ResetBits(GPIOG, GPIO_Pin_4);
GPIO_ResetBits(GPIOG, GPIO_Pin_6);
GPIO_SetBits(GPIOG, GPIO_Pin_8);
if(flag==1){step=1;}
if(flag==0){step--;}
|
|