void Motor_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
// GPIO_ResetBits(GPIOA,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_6|GPIO_Pin_9);
}
void motor_CW(void)
{
int motor_step=0;
switch(motor_step)
{
case 0:
PBout(0)=1;
PBout(1)=0;
PBout(2)=0;
PBout(3)=0;
break;
case 1:
PBout(0)=1;
PBout(1)=1;
PBout(2)=0;
PBout(3)=0;
break;
case 2:
PBout(0)=0;
PBout(1)=1;
PBout(2)=0;
PBout(3)=0;
break;
case 3:
PBout(0)=0;
PBout(1)=1;
PBout(2)=1;
PBout(3)=0;
break;
case 4:
PBout(0)=0;
PBout(1)=0;
PBout(2)=1;
PBout(3)=0;
break;
case 5:
PBout(0)=0;
PBout(1)=0;
PBout(2)=1;
PBout(3)=1;
break;
case 6:
PBout(0)=0;
PBout(1)=0;
PBout(2)=0;
PBout(3)=1;
break;
case 7:
PBout(0)=1;
PBout(1)=0;
PBout(2)=0;
PBout(3)=1;
break;
default:
PBout(0)=0;
PBout(1)=0;
PBout(2)=0;
PBout(3)=0;
break;
}
motor_step++;
if(motor_step>7)
motor_step=0;
}
void motor_CCW(void) //Äæê±Õë
{
int motor_step=0;
switch(motor_step){
case 0:
PBout(0)=1;
PBout(1)=0;
PBout(2)=0;
PBout(3)=1;
break;
case 1:
PBout(0)=0;
PBout(1)=0;
PBout(2)=0;
PBout(3)=1;
break;
case 2:
PBout(0)=0;
PBout(1)=0;
PBout(2)=1;
PBout(3)=1;
break;
case 3:
PBout(0)=0;
PBout(1)=0;
PBout(2)=1;
PBout(3)=0;
break;
case 4:
PBout(0)=0;
PBout(1)=1;
PBout(2)=1;
PBout(3)=0;
break;
case 5:
PBout(0)=0;
PBout(1)=1;
PBout(2)=0;
PBout(3)=0;
break;
case 6:
PBout(0)=1;
PBout(1)=1;
PBout(2)=0;
PBout(3)=0;
break;
case 7:
PBout(0)=1;
PBout(1)=0;
PBout(2)=0;
PBout(3)=0;
break;
default:
PBout(0)=0;
PBout(1)=0;
PBout(2)=0;
PBout(3)=0;
break;
}
motor_step++;
if(motor_step>7)
motor_step=0;
}
void motor_loop(uint8_t dir)
{
if(dir)
motor_CW();
else
motor_CCW();
}
#include "delay.h"
#include "motor.h"
//#include "adc.h"
int main()
{
Motor_Init();
while(1)
{
void motor_CW();
}
}
这是我写的步进电机驱动的代码,用的是uln2003驱动板,IN1,IN2,IN3,IN4连接的分别是PB0,PB1,PB2,PB3.驱动板也外加有直流电源,但是步进电机毫无反应啊。求大神看看,指点指点啊!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
int motor_step=0;
switch(motor_step)
{
case 0:
PBout(0)=1;
PBout(1)=0;
PBout(2)=0;
PBout(3)=0;
break;...................
一进来motor_step=0; 后面motor_step++ 有什么用。好像可以设置成static int motor_step=0;
一周热门 更多>