Biblioteka do sterowania silnikami DC poprzez MC34931, napisana pod STM32F1, wymaga HAL.
// Definicja struktury silnika
typedef struct {
TIM_HandleTypeDef *htim;
uint32_t channel_IN1;
uint32_t channel_IN2;
// Piny sterujące D1 (Disable) i E2 (Enable/Sleep)
GPIO_TypeDef *D1_Port;
uint16_t D1_Pin;
GPIO_TypeDef *E2_Port;
uint16_t E2_Pin;
} Motor_Config_t;
typedef enum {
DIR_CW = 0, // Clockwise
DIR_CCW = 1 // Counter-Clockwise
} Motor_Dir_t;- STM32F1
- Skonfigurowany timer z PWM na dwóch kanałach
- dwa piny GPIO Output
void Motor_Init(
Motor_Config_t *motor,
TIM_HandleTypeDef *htim,
uint32_t ch1,
uint32_t ch2,
GPIO_TypeDef *D1_Port,
uint16_t D1_Pin,
GPIO_TypeDef *E2_Port,
uint16_t E2_Pin
);Wywołać na początku, inicjalizuje strukturę silnika.
void Motor_Init_Hardware(Motor_Config_t *motor);Ustawienie pinów zgodnie z datasheet MC34931, D1 -> LOW, E2 -> HIGH
Uruchomienie PWM z wypełnieniem 0.
Wywołać po Motor_Init().
void Motor_SetSpeed(Motor_Config_t *motor, Motor_Dir_t dir, uint8_t speed_percent);Ustawienie kierunku i prędkości (0 - 100).
void Motor_Stop(Motor_Config_t *motor);Zatrzymanie silnika.
void Motor_Sleep(Motor_Config_t *motor, uint8_t enable_sleep);Przełączenie tryb oszczędzania energii (enable_sleep = 1 - Wł, enable_sleep = 0 - WYŁ).