1. Внутри прерывания TIM3 - не сбрасываете флаг прерывания TIM3 - я
не знаю в каком режиме работает TIM3. Может там надо обновлять
регистры CNT или COMP. 2. для тех переменных которые изменяются в
одном из прерываний - не используете volatile - при использовании
этих переменных в другом месте, не запрещаете временно это
прерывание или все прерывания 3. Как писали другие товарищи - влетаете в другое прерывание с более высоким уровнем и очень редко из него выходите.