Относительно свежий пример: - В настройках таймера при задании режима PWM1 или PWM2, т.е. при записи в регистр CCMRx. В даташитах приводится такая сноска:
In PWM mode 1 or 2, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode.
А всего-то надо - после записи в CCMRx очистить флаги в SR. А там сделано наоборот. Исходников говно-хала под рукой нет - не держу. Но кусок кода, где пришлось латать заплатку привожу. Код кстати не мой, но пришлось в нем копаться:
// Start frequency counter
HAL_TIM_OC_Start(&TIM_PULSE_FREQ_PER, TIM_CHANNEL_1);
TIM9->SR = 0; TIM10->SR = 0; // А это заплатка !!!
__HAL_TIM_ENABLE_IT(&TIM_PULSE_FREQ_PER, TIM_IT_UPDATE);
Думаю, кусок кода где инициализируется регистр CCMRx легко найти.
Ну и про то, что я уже давно писал насчет библиотек USB - по ссылкам ниже:
http://caxapa.ru/569817.html
http://caxapa.ru/579475.html
http://caxapa.ru/624728.html
http://caxapa.ru/734808.html