AnsweredAssumed Answered

STR912 wierd interrupt handling

Question asked by prosinger.istvan on Jul 24, 2012
Latest reply on Jan 20, 2013 by prosinger.istvan
Dear Colleagues,

I have a common interrupt handling issue with a Keil MCBSTR9 eval kit.
Everything works fine, but it's just not handling an ISR properly. I'm using vendor given ISR routines, for example

void TIM3_IRQHandler(void){   /*write your handler here*/   /* ... */  //blablabla my ISR...//  TIM_ClearFlag(TIM3, TIM_FLAG_OC2);   /*write any value to VIC0 VAR*/  VIC0->VAR = 0xFF;}
This works fine, but won't return from the ISR after executing it. 
So at the end I stated to the compiler the
__irq
directive infont of the ISR function, but then the compiler says that the definition of
__irq void TIM3_IRQHandler(void)in 91x_it.h isn't correct. So I changed it in 91x_it.h and now it works well.But at the end of the line I don't think that it's common or safe to change the vendor given libraries, so I must be missing here something. Any ideas about this?I am certaing that without the _irq directive the compiler (with my setup) can't tell that 91x_it.c contains ISR routines, and that's the reason that my ISR's aren't handled as such, but I can't tell what am I missing....

Outcomes