LibOpenCM3 vector table is all blocking-handler

1.3k views Asked by At

The answer to this question here
Libopencm3 interrupt table on STM32F4
explains the whole mechanism nicely but what I get is whole vector table filled with blocking handlers.

I know that because I see it in debugger (apart from the whole thing not working): disassembly screenshot showing vector table.

It is as though linker simply ignores my nicely defined interrupt handler function(s), e.g.:

void sys_tick_handler(void)
{
...
}

void tim1_up_isr(void)
{
...
}

I am using EmBitz IDE and have followed this tutorial here to get libopencm3 to work (and it does work except for this issue).

I have checked the function names n-fold and have tried several online examples including those from the libopencm3-examples project.

Everything compiles without a glitch and loads into the target board (STM32F103C8) and runs fine - except no ISRs get invoked (I do get interrupt(s) but they get stuck in blocking handlers).

Does anyone have an idea why is this happening?

1

There are 1 answers

4
Alexey Esaulenko On BEST ANSWER

It looks like linking with standard vector table (from ST's SPL or HAL).

To check this, try to rename your sys_tick_handler() to SysTick_Handler() and tim1_up_isr() to TIM1_UP_IRQHandler().

If it works, find file with this SysTick_Handler and TIM1_UP_IRQHandler (I think, that will be startup*.s) and delete it from your project.