Никогда такого глюка не видел 8)
Я бы подебажил
1 В фунции коллбеков конца DMA - TIM1_TC1( ) и TIM1_TC2() положил бы счетчики:
volatile int tc2_cnt = 0;
void TIM1_TC2()
{
tc2_cnt++;
}
В main loop раз в секунду их бы напечатал. (Собсвенно проверка глюков компилятора) и проверка наличия обработчиков DMA.
2. Написал бы коротенький тест с фиксированнм значением в PWM таймера и посмотрел бы на скопе.
3. Ничего не помогло - перенес бы второй канал на timer 1 chanel 3. Нужно правильно зарезервировать дма в кубе для этого канала , добавить обработчики в файле xxxf4_it.c и инитиализоровать в main.c
PS
Можно еще смапировать прямо из куба TIM1_CH2 вместо ножки A9 на ножку E11(В кубе, левой кнопкой мышки, прямо на ножке е11)и регенерация проекта, без ручных изменений в коде