#include "Voile.h" #include "stm32f1xx_ll_gpio.h" #include "stm32f1xx_ll_rcc.h" // utile dans la fonction SystemClock_Config #include "stm32f1xx_ll_utils.h" // utile dans la fonction SystemClock_Config #include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config #include "stm32f1xx_ll_tim.h" #include "stm32f1xx_ll_bus.h" #include "stdlib.h" //Remplacer par maths.h quand on va tout faire marcher. #define ARR (19999) #define PSC (71) #define Timer (TIM1) #define channel (1) #define coefa (2) #define coefb (1) #define coefc (2) #define coefd (1) int angleVoileActuel = 0; //angle de la voile. Mis à jour quans on la tend. de 0 à 45. void ConfVoile(){ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); MyTimer_Conf(Timer,ARR,PSC); LL_GPIO_SetPinMode(GPIOA,LL_GPIO_PIN_8,LL_GPIO_MODE_ALTERNATE); LL_GPIO_SetPinOutputType(GPIOA,LL_GPIO_PIN_8,LL_GPIO_OUTPUT_PUSHPULL); LL_TIM_OC_SetMode(Timer, channel, LL_TIM_OCMODE_PWM1); Timer->CCER |= TIM_CCER_CC1E; Timer->BDTR |= 0x1 << 15; Timer->CCR1 = 1500; // par defaut tendu à 1ms MyTimer_Start(Timer); } int RecupTension(void){ return angleVoileActuel; } int CalculerTension(int alpha){ if (0 < abs(alpha) && abs(alpha) > 45){ return 0; } else { int res = alpha * coefa + coefb; return res; } } void TendreVoile(int theta) { Timer->CCR1 = coefc * theta + coefd ; }