set bit 0 8 ноября, 2017 Опубликовано 8 ноября, 2017 · Жалоба Keil 5. Код сгенерирован STM32CubeMX. Проблема в прерывании таймера TIM6 по переполнению. Вход в прерывание "void TIM6_DAC_IRQHandler(void)", происходит с правильным периодом, согласно настройке таймера. А, вот вызов функции "void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim6)" и попадание в нее, происходит очень быстро, не соответствует периоду таймера. Данная функция, если правильно понял, предназначена для размещения кода по прерыванию от таймера. Не могу понять почему так происходит. В общем первый раз столкнулся с HAL. Есть мысль все запихнуть в прерывание "void TIM6_DAC_IRQHandler(void)", и бросить мучится с HAL_TIM_PeriodElapsedCallback. После Reset, попадаем в функцию HAL_TIM_PeriodElapsedCallback, почти мгновенно, следующий раз правильно, потом снова мгновенно, постоянно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
set bit 0 9 ноября, 2017 Опубликовано 9 ноября, 2017 · Жалоба Все оказалось проще. Привык с AVR... При отладке, таймер не останавливается! Когда при отладке встаем по прерыванию, таймер продолжает независимо работать. Проблема в этом: Debug MCU configuration register (DBGMCU_CR) . На время отладки необходимо выключать используемые таймеры в регистре DBGMCU_CR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться