#ifndef __MOTOR_H #define __MOTOR_H #include "stm32f1xx_hal.h" typedef enum { MOTOR_STOP, MOTOR_FORWARD, MOTOR_BACKWARD } MotorDirection; typedef struct { TIM_HandleTypeDef *htim_pwm; uint32_t channel_pwm; GPIO_TypeDef *port_in1; uint16_t pin_in1; GPIO_TypeDef *port_in2; uint16_t pin_in2; MotorDirection dir; int16_t pwm_value; /* 0 ~ PWM_PERIOD */ } Motor; void Motor_Init(Motor *motor, TIM_HandleTypeDef *htim, uint32_t channel, GPIO_TypeDef *port1, uint16_t pin1, GPIO_TypeDef *port2, uint16_t pin2); void Motor_SetSpeed(Motor *motor, int16_t speed); /* speed: -1000 ~ +1000, positive = forward, negative = backward */ void Motor_SetSpeedScaled(Motor *motor, int16_t speed); void Motor_Stop(Motor *motor); #endif /* __MOTOR_H */