1

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?

4

1 回答 1

0

它看起来像是与标准向量表链接(来自 ST 的 SPL 或 HAL)。

要检查这一点,请尝试将您的sys_tick_handler()toSysTick_Handler()tim1_up_isr()to重命名TIM1_UP_IRQHandler()

如果它有效,请找到带有此SysTick_HandlerTIM1_UP_IRQHandler(我认为将是startup*.s)的文件并将其从您的项目中删除。

于 2017-01-09T10:51:56.590 回答