Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void step(st_mot *s, int steps_to_move)
- {
- if(s->operate==0){ //check operating mode
- // s->flag = 1;
- s->steps_left = abs(steps_to_move); // how many steps to take
- s->operate=1;
- // determine direction based on whether steps_to_mode is + or -:
- if (steps_to_move > 0) { s->direction = 0; }
- if (steps_to_move < 0) { s->direction = 1; }
- }
- //setting motor parameters
- // decrement the number of steps, moving one step each time:
- if(s->steps_left >0)
- {
- uint32_t now = HAL_GetTick();
- // move only if the appropriate delay has passed:
- if (now - s->last_step_time >= s->step_delay)
- {
- // get the timeStamp of when you stepped:
- s->last_step_time = now;
- // increment or decrement the step number,
- // depending on direction:
- if (s->direction == 1)
- {
- s->step_number++;
- if (s->step_number == s->number_of_steps) {
- s->step_number = 0;
- }
- }
- else
- {
- if (s->step_number == 0) {
- s->step_number = s->number_of_steps;
- }
- s->step_number--;
- }
- // decrement the steps left:
- s->steps_left--;
- // step the motor to step number 0, 1, ..., {3 or 10}
- stepMotor(s->step_number % 4);
- }
- }
- else if(s->steps_left == 0){
- clearPinout();
- s->operate=0;
- s->flag=0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement