#include "stm32f10x.h" #include #include #include // int* anglequonveut=0; A DECLARER DANS LE MAIN void Init_bordage(TIM_TypeDef *Timer, char channel, unsigned short ValARR, unsigned short ValPSC){ MyTimer_Init(Timer,ValARR,ValPSC); Mytimer_PWM(Timer, channel); MyTimer_Base_Start(Timer); MyGPIO_Init(GPIOA, 0, AltOut_Ppull); } void Update_bodage (TIM_TypeDef *Timer, char channel, float roulis, int* angle){ float val; int val2; val = TIM4->CNT; val2 = TIM4->CNT; if (roulis < -40.0 || roulis > 40.0) { Mytimer_PWM_cycle(Timer, channel, 5); } else { if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) { Mytimer_PWM_cycle(Timer, channel, 9); } else if (val <= 720.0) { *angle = 2*(val2)/12 -30; val/= -108.0; val+= 35.0/3.0; Mytimer_PWM_cycle(Timer, channel, (int) val); } else{ *angle = -2*(val2)/12 + 210; val/= 108.0; val+= -5.0/3.0; Mytimer_PWM_cycle(Timer, channel, (int) val); } } }