首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

28byj48步进电机工作时序图和stm32+uln2003驱动代码

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");
    }
}
继承事业,薪火相传
返回列表