AnsweredAssumed Answered

Why __HAL_TIM_CLEAR_IT at start of interrupt?

Question asked by Kristoffer Iversen on Oct 15, 2017
Latest reply on Oct 15, 2017 by Kristoffer Iversen



Why does the HAL library call "__HAL_TIM_CLEAR_IT" before calling the "HAL_TIM_PeriodElapsedCallback" callback, instead of after?


I previously had a bit of code running before the "HAL_TIM_IRQHandler(...)" in stm32f0xx_it.c for TIM6, which worked well. But when I refactored it to use the callback and then TIM17 stopped working (specifically a different timer all together stops interrupting!?).


After trying to track down the problem it seems that if I clear the interrupt bit for TIM6 before starting my bit of code, that makes TIM17 stop working. However if I run my code first, then clear the interrupt for TIM6, then TIM17 remains unaffected. Also, I can short down the code (so that execution is faster), and then equally TIM17 seems unaffected..


Why does this happen? Why is  __HAL_TIM_CLEAR_IT called by HAL before the Callback is ran?


Thanks for any help!