*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS

I am using the following code:

// Timer3 IRQ: Executed each 10ms
void T3TIMI_IRQHandler (void) __irq
{

GPIO_BitWrite(GPIO2, 15, ~GPIO_BitRead(GPIO2, 15));

TIM_FlagClear(TIM3, TIM_TO_IT);

EIC->IPR = 1 << T3TIMI_IRQChannel;

}

And I receive the following error:

Build target 'STR7 Eval Board RAM'
assembling Startup.s...
compiling Hello.c...
compiling UART.c...
compiling GPIO.c...
linking...
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: GPIO_Config?T
MODULE: C:\Keil\ARM\LIB\ST\STR71x.LIB (gpio)
DEFINED: .\RAM\GPIO.obj (GPIO)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: GPIO_BitWrite?T
MODULE: C:\Keil\ARM\LIB\ST\STR71x.LIB (gpio)
DEFINED: .\RAM\GPIO.obj (GPIO)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: GPIO_ByteWrite?T
MODULE: C:\Keil\ARM\LIB\ST\STR71x.LIB (gpio)
DEFINED: .\RAM\GPIO.obj (GPIO)
*** WARNING L23: UNRESOLVED EXTERNAL SYMBOLS
Program Size: data=2074 const=0 code=242
Target not created

If I put the:

GPIO_BitWrite(GPIO2, 15, ~GPIO_BitRead(GPIO2, 15));

in the main function everything works just fine. If I put it in the ISR I get the above error. Why doesn't it work in an interrupt service routine?

regards,

Erik

More questions in this forum