#include "stm32f10x.h" #include #include #include // int* anglequonveut=0; A DECLARER DANS LE MAIN void Init_bordage(){ MyTimer_Init(TIM1,3200,450); Mytimer_PWM(TIM1, 1); MyTimer_Base_Start(TIM1); MyGPIO_Init(GPIOA, 8, AltOut_Ppull); } void Update_bordage (TIM_TypeDef *Timer, char channel, char roulis){ float val; val = TIM4->CNT; char roulisabs = (1<<7) - (roulis & 0x7F); if ((roulis >= 40.0 && !(roulis & (1<<7))) || ((roulis & (1<<7)) && (roulisabs >= 40))) { 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, 10); } else if (val <= 720.0) { val/= -108.0; val+= 35.0/3.0; Mytimer_PWM_cycle(Timer, channel, (int) val); } else{ val/= 108.0; val+= -5.0/3.0; Mytimer_PWM_cycle(Timer, channel, (int) val); } } } int Calcul_Angle(){ int val = TIM4->CNT; if (val <4.0*45.0 || val > 4.0*(360.0-45.0)) { return 0; } else{ if (val <= 720.0) { return 2*(val)/12 -30; } else{ return -2*(val)/12 + 210; } } }