Size: a a a

2021 January 28

F

FrozenYard49 in STM32
Вот код запуска и обработки прерывания
источник

F

FrozenYard49 in STM32
источник

s

stD in STM32
А если это добавить...

__HAL_TIM_CLEAR_FLAG(&htim1, TIM_SR_UIF);
источник

F

FrozenYard49 in STM32
stD
А если это добавить...

__HAL_TIM_CLEAR_FLAG(&htim1, TIM_SR_UIF);
Не сработало. Причем, может поможет: во время отладки программа входит в breakpoint  в запуске таймера, и входит в обработчик прерывания. Но лишь в разные разы запуска. Нельзя войти в брейкпоинт в запуске таймера нажать на «плей» и дойти до брейкпоинта обработки прерывания. Лишь в разные разы запуска таймера
источник

F

FrozenYard49 in STM32
Кстати, значения регистров(скинуты выше) были взяты уже в момент обработки прерывания
источник

F

FrozenYard49 in STM32
И да, скорее всего у меня какая-то ошибка в коде с моей стороны, но вот где ума не приложу
источник

s

stD in STM32
Ещё раз спрошу - номер таймера то правильный вписали?
источник

s

stD in STM32
__HAL_TIM_CLEAR_FLAG(&htim????, TIM_SR_UIF);
источник

s

stD in STM32
Если используете таймер в одноимпульсном режиме, тогда перед очередным запуском, нужно  в колбеке  вызывать функцию остановки таймера...

HAL_TIM_Base_Stop_IT(&htim1);
источник

F

FrozenYard49 in STM32
stD
Ещё раз спрошу - номер таймера то правильный вписали?
Разумеется, во все разы кроме первого все работает как нужно. Причём даже в первый факт прерывания есть. Просто в первый раз нет задержки
источник

F

FrozenYard49 in STM32
Кстати, у меня прерывание в функции TIM1_BRK_UP_TRG_COM_IRQHandler(void)
в файле stm32f0_it
источник

s

stD in STM32
FrozenYard49
Разумеется, во все разы кроме первого все работает как нужно. Причём даже в первый факт прерывания есть. Просто в первый раз нет задержки
Её нет вот поэтому...

https://t.me/stm32std/4649
источник

I

Igor in STM32
Добрый день, помогите разобраться, если к примеру по внешнему прерыванию на пине, вызывается тяжелая функция, то ее выполнение должно быть не в EXTI1_IRQHandler, который в it.c  файле, а вызывать ее в HAL_GPIO_EXTI_Callback?
источник

s

stD in STM32
Колбек является продолжением низкоуровнего обработчика, поэтому тяжёлую операцию лучше вынестти в основной цикл.
источник

s

stD in STM32
В колбек поднимать флажок.
источник

F

FrozenYard49 in STM32
я даже вынес эту процесс остановки таймера из функции прерывания в отдельную функцию, запускаемую по флагу. Не помогло. Куда можно копать?
источник

I

Igor in STM32
stD
Колбек является продолжением низкоуровнего обработчика, поэтому тяжёлую операцию лучше вынестти в основной цикл.
спасибо, а если во время выполнения функции произойдет еще одно прерывание? или она все равно выполнится до конца
источник

s

stD in STM32
Какой функции?
источник

F

FrozenYard49 in STM32
stD
Какой функции?
из этой TIM1_BRK_UP_TRG_COM_IRQHandler
источник

ND

Nikita D in STM32
Igor
спасибо, а если во время выполнения функции произойдет еще одно прерывание? или она все равно выполнится до конца
Это уже на совести разработчика)) можно заблокировать установку нового флага другим флагом, пока функция не завершиться
источник