Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. void step(st_mot *s, int steps_to_move)
  2. {
  3.  
  4.   if(s->operate==0){ //check operating mode
  5. //  s->flag = 1;
  6.   s->steps_left = abs(steps_to_move);  // how many steps to take
  7.   s->operate=1;
  8.   // determine direction based on whether steps_to_mode is + or -:
  9.   if (steps_to_move > 0) { s->direction = 0; }
  10.   if (steps_to_move < 0) { s->direction = 1; }
  11.   }
  12.   //setting motor parameters
  13.  
  14.   // decrement the number of steps, moving one step each time:
  15.     if(s->steps_left >0)
  16.   {
  17.      uint32_t now = HAL_GetTick();
  18.     // move only if the appropriate delay has passed:
  19.     if (now - s->last_step_time >= s->step_delay)
  20.     {
  21.       // get the timeStamp of when you stepped:
  22.       s->last_step_time = now;
  23.       // increment or decrement the step number,
  24.       // depending on direction:
  25.       if (s->direction == 1)
  26.       {
  27.         s->step_number++;
  28.         if (s->step_number == s->number_of_steps) {
  29.           s->step_number = 0;
  30.         }
  31.       }
  32.       else
  33.       {
  34.         if (s->step_number == 0) {
  35.           s->step_number = s->number_of_steps;
  36.         }
  37.         s->step_number--;
  38.       }
  39.       // decrement the steps left:
  40.       s->steps_left--;
  41.       // step the motor to step number 0, 1, ..., {3 or 10}
  42.       stepMotor(s->step_number % 4);
  43.     }
  44.   }
  45.     else if(s->steps_left == 0){
  46.         clearPinout();
  47.         s->operate=0;
  48.         s->flag=0;
  49.  
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement