diff --git a/app/by_stepper.c b/app/by_stepper.c index 35fabc0..58a6497 100644 --- a/app/by_stepper.c +++ b/app/by_stepper.c @@ -76,6 +76,10 @@ void by_stepper_set_position_millimeter(float distance) return; } + if (distance > 170) { + distance = 170; + } + gpio_bits_write(GPIOA, GPIO_PINS_9, FALSE); // EN position_aim = (int64_t)(distance * ENCODER_PULSE_PER_MILLIMETER); position_offset = position_aim - position; @@ -87,7 +91,10 @@ void by_stepper_add_position_millimeter(float distance) { if (!running_flag) { gpio_bits_write(GPIOA, GPIO_PINS_9, FALSE); // EN - position_aim = position + (int64_t)(distance * ENCODER_PULSE_PER_MILLIMETER); + position_aim = position + (int64_t)(distance * ENCODER_PULSE_PER_MILLIMETER); + if (position_aim > 170 * ENCODER_PULSE_PER_MILLIMETER) { + position_aim = 170 * ENCODER_PULSE_PER_MILLIMETER; + } position_offset = position_aim - position; running_flag = 1; } @@ -121,7 +128,7 @@ void by_stepper_init(void) while (gpio_input_data_bit_read(GPIOB, GPIO_PINS_10) == SET) { gpio_bits_write(GPIOA, GPIO_PINS_8, by_stepper.dir ? TRUE : FALSE); // DIR gpio_bits_write(GPIOB, GPIO_PINS_15, !gpio_output_data_bit_read(GPIOB, GPIO_PINS_15)); // CLK - DWT_Delay(40U * (uint16_t)by_stepper.speed); + DWT_Delay(30U * (uint16_t)by_stepper.speed); } position = 0; // 位置归零