SVC_Handler multiply defined

Dear Keil,

We are using the STM32F3 discovery board, and used the RTX with the demo code.
When we compile, it says SVC_Handler multiply defined; Systick multiply defined etc.

I was wondering if you have met this problem before and know how to solve. Many of us have this problem.

Thanks.
Jack

Parents
  • Thanks for your prompt reply - I really appreciate it.
    I think it's a simple problem but I don't know how to solve it:-

    Story line:-

    1. I bought the stm32f3 discovery board
    2. Opened the Keil demo code, added RTX Kernel in options & added the RTX_Conf_CM.c
    3. I just simply called a task in main() like so:- os_sys_init (task1);
    4. I get the 3 errors on compile time:-

    .\Demo\Demo.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).
    .\Demo\Demo.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).
    .\Demo\Demo.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).

    5. If I comment out the above 3 handler functions in stm32f30x_it.c and run the code, the ARM runs to void HardFault_Handler(void) and gets stuck there.

    6. I suspect the reason is because I commented out this crucial function (as mentioned above):-
    /*void SysTick_Handler(void)
    { TimingDelay_Decrement(); USBConnectTimeOut--; DataReady ++;
    }*/

    As you can see there is a timing delay and other stuff inside the Systick_handler which is used in the demo code.
    What can I do comment out the Systick_Handler and yet retain the 3 lines of code?
    (I suspect there is another Systick_handler built into the RTOS which is conflicting with this one).

    Many thanks for your help.
    Jack

Reply
  • Thanks for your prompt reply - I really appreciate it.
    I think it's a simple problem but I don't know how to solve it:-

    Story line:-

    1. I bought the stm32f3 discovery board
    2. Opened the Keil demo code, added RTX Kernel in options & added the RTX_Conf_CM.c
    3. I just simply called a task in main() like so:- os_sys_init (task1);
    4. I get the 3 errors on compile time:-

    .\Demo\Demo.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).
    .\Demo\Demo.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).
    .\Demo\Demo.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by hal_cm4.o and stm32f30x_it.o).

    5. If I comment out the above 3 handler functions in stm32f30x_it.c and run the code, the ARM runs to void HardFault_Handler(void) and gets stuck there.

    6. I suspect the reason is because I commented out this crucial function (as mentioned above):-
    /*void SysTick_Handler(void)
    { TimingDelay_Decrement(); USBConnectTimeOut--; DataReady ++;
    }*/

    As you can see there is a timing delay and other stuff inside the Systick_handler which is used in the demo code.
    What can I do comment out the Systick_Handler and yet retain the 3 lines of code?
    (I suspect there is another Systick_handler built into the RTOS which is conflicting with this one).

    Many thanks for your help.
    Jack

Children
More questions in this forum