P.S. выделение памяти в прерываниях зло и т.д. ага.
Так вот, что бы не проставлять кучу __disable_irq(); __enable_irq();
#define SERVO_180 8200 #define SERVO_0 1800 void set_pos(uint8_t pos) { uint32_t tmp = (SERVO_180 - SERVO_0) / 180; TIM2->CCR2 = SERVO_0 + tmp * pos; }
uint32_t tmp = ((SERVO_180 - SERVO_0) * pos) / 180 + SERVO_0;
TIM2->CCR2 = tmp;
сервопривод начинает сходить с ума