#include "DCMotor.h" void DCMotor_conf() { //On règle la vitesse en valeur absolue, ici à 0 Timer_pwmo_conf(TIM2, LL_TIM_CHANNEL_CH2, 50, 0); //On règle le sens du moteur, ici sens direct (?) 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, 0); } 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; }