35 lines
872 B
C
35 lines
872 B
C
#include "DCMotor.h"
|
|
|
|
void DCMotor_conf(double speed) {
|
|
|
|
double speedAbs = (speed > 0.) ? speed : -speed;
|
|
int sens = (speed > 0.) ? 1 : 0;
|
|
|
|
//On règle la vitesse en valeur absolue
|
|
Timer_pwmo_conf(TIM2, LL_TIM_CHANNEL_CH2, 50, speedAbs);
|
|
|
|
//On règle le sens du moteur
|
|
GPIO_conf(GPIOA, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT, LL_GPIO_OUTPUT_OPENDRAIN, LL_GPIO_PULL_DOWN);
|
|
GPIO_setPin(GPIOA, LL_GPIO_PIN_2, sens);
|
|
}
|
|
|
|
void DCMotor_setSpeed(double speed) {
|
|
|
|
double speedAbs = (speed > 0.) ? speed : -speed;
|
|
int sens = (speed > 0.) ? 1 : 0;
|
|
|
|
Timer_pwmo_setDutyCycle(TIM2, LL_TIM_CHANNEL_CH2, speedAbs);
|
|
GPIO_setPin(GPIOA, LL_GPIO_PIN_2, sens);
|
|
|
|
}
|
|
|
|
double DCMotor_getSpeed(){
|
|
|
|
double speedAbs = Timer_pwmo_getDutyCycle(TIM2, LL_TIM_CHANNEL_CH2);
|
|
int sens = GPIO_readPin(GPIOA, LL_GPIO_PIN_2);
|
|
|
|
double speed = (sens) ? speedAbs : -speedAbs;
|
|
|
|
return speed;
|
|
|
|
}
|