28byj48步进电机工作时序图和stm32+uln2003驱动代码
 
- UID
- 1029342
- 性别
- 男
|

28byj48步进电机工作时序图和stm32+uln2003驱动代码
void init_stepmotor_GPIO(void){
//打开时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//GPIO设置
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void motor_cw(uint32_t circle,uint32_t delay)//circle循环数 delay控制转速
{
uint32_t i,j;
j=2000;
for(i=0;i<=circle;i++)
{
GPIO_Write(GPIOA, 8);
motor_delay(j);
GPIO_Write(GPIOA, 12);
motor_delay(j);
GPIO_Write(GPIOA, 4);
motor_delay(j);
GPIO_Write(GPIOA, 6);
motor_delay(j);
GPIO_Write(GPIOA, 2);
motor_delay(j);
GPIO_Write(GPIOA, 3);
motor_delay(j);
GPIO_Write(GPIOA, 1);
motor_delay(j);
GPIO_Write(GPIOA, 9);
motor_delay(j);
motor_delay(delay);//这个控制转速
}
}
void motor_ccw(uint32_t circle,uint32_t delay)
{
uint32_t i,j;
j=2000;
for(i=0;i<=circle;i++)
{
GPIO_Write(GPIOA, 9);
motor_delay(j);
GPIO_Write(GPIOA, 1);
motor_delay(j);
GPIO_Write(GPIOA, 3);
motor_delay(j);
GPIO_Write(GPIOA, 2);
motor_delay(j);
GPIO_Write(GPIOA, 6);
motor_delay(j);
GPIO_Write(GPIOA, 4);
motor_delay(j);
GPIO_Write(GPIOA, 12);
motor_delay(j);
GPIO_Write(GPIOA, 8);
motor_delay(j);
motor_delay(delay);//这个控制转速
}
}
void motor_delay(uint32_t delay)
{
uint32_t i;
for(i=1;i<delay;i++)
{
asm("nop");
}
} |
|
|
|
|
|