这个问题的答案在这里
很好地解释了整个机制,但我得到的是包含阻塞处理程序的整个向量表。
我之所以知道这一点,是因为我在调试器中看到了它(除了所有不起作用的事情):显示向量表的反汇编屏幕截图。
这就好像链接器忽略了我定义得很好的中断处理程序函数,例如:
void sys_tick_handler(void)
{
...
}
void tim1_up_isr(void)
{
...
}我正在使用EmBitz IDE,并遵循本教程这里使libopencm3工作(除了这个问题外,它确实有效)。
我已经检查了函数名n-折叠,并尝试了几个在线例子,包括那些来自libopencm3 3-示例项目。
所有的东西都是在没有故障的情况下编译的,并加载到目标板(STM32F103C8)中,并且运行良好--除非没有调用ISRs (我确实得到中断,但它们被阻塞处理程序卡住了)。
,有人知道为什么会这样吗?
发布于 2017-01-09 10:51:56
它看起来像与标准向量表(来自ST的SPL或HAL)的链接。
要检查这一点,请尝试将sys_tick_handler()重命名为SysTick_Handler(),将tim1_up_isr()重命名为TIM1_UP_IRQHandler()。
如果它有效,使用此SysTick_Handler和TIM1_UP_IRQHandler查找文件(我认为,这将是startup*.s)并将其从项目中删除。
https://stackoverflow.com/questions/41257183
复制相似问题