AnsweredAssumed Answered

Run two motors in the same time

Question asked by pereguda.anton on Sep 10, 2016
Latest reply on Sep 10, 2016 by waclawek.jan
The main question is how to run two motors SecondMotorRotateToLeft() and FirstMotorRotateToLeft() in the same time?

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
 
void Delay(unsigned int t)
{
    unsigned int i;
    for (i=0;i<t;i++);
}
 
void GPIOD_Initialize(){
    GPIO_InitTypeDef GPIOC_Stepper;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);
    GPIOC_Stepper.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_7;
    GPIOC_Stepper.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIOC_Stepper.GPIO_Speed= GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIOC_Stepper);
 
    GPIO_InitTypeDef GPIOD_Stepper;
    GPIOD_Stepper.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_7;
    GPIOD_Stepper.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIOD_Stepper.GPIO_Speed= GPIO_Speed_50MHz;
    GPIO_Init(GPIOD,&GPIOD_Stepper);
}
void SecondMotorRotateToLeft()
{
GPIO_Write(GPIOD,GPIO_Pin_5);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_5| GPIO_Pin_3);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_3);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_3|GPIO_Pin_7);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_7);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_7|GPIO_Pin_1);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_1);
        Delay(time);
         
        GPIO_Write(GPIOD,GPIO_Pin_1|GPIO_Pin_5);
        Delay(time);
}
void FirstMotorRotateToLeft()
{
GPIO_Write(GPIOC,GPIO_Pin_5);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_5| GPIO_Pin_3);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_3);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_3|GPIO_Pin_7);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_7);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_7|GPIO_Pin_1);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_1);
        Delay(time);
         
        GPIO_Write(GPIOC,GPIO_Pin_1|GPIO_Pin_5);
        Delay(time);
}
 
int main(void)
{
    const int time = 10000;
    GPIOD_Initialize();
    while(1)
    {
        FirstMotorRotateToLeft();
        SecondMotorRotateToLeft();
    }
}

Outcomes