Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HAL и таймер TIM6. STM32f100C8T6B
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
_Алекс
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, почти мгновенно, следующий раз правильно, потом снова мгновенно, постоянно.
_Алекс
Все оказалось проще. Привык с AVR... При отладке, таймер не останавливается! Когда при отладке встаем по прерыванию, таймер продолжает независимо работать.
Проблема в этом: Debug MCU configuration register (DBGMCU_CR) . На время отладки необходимо выключать используемые таймеры в регистре DBGMCU_CR.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.