Arm STM32F4上的Libopencm3中断表
我在STM32F4上的项目中使用libopenCM3。我使用了以前的标准外设库和由ST 在这些库中,您拥有具有向量表定义的程序集文件(启动文件) 这就是我在libopenCM3中缺少的内容。你能告诉我这张桌子在哪里吗?还是用另一种方式 我真的需要在我的项目中使用中断 谢谢 你能告诉我这张桌子在哪里吗 中断向量表位于:Arm STM32F4上的Libopencm3中断表,arm,interrupt,stm32,libopencm3,Arm,Interrupt,Stm32,Libopencm3,我在STM32F4上的项目中使用libopenCM3。我使用了以前的标准外设库和由ST 在这些库中,您拥有具有向量表定义的程序集文件(启动文件) 这就是我在libopenCM3中缺少的内容。你能告诉我这张桌子在哪里吗?还是用另一种方式 我真的需要在我的项目中使用中断 谢谢 你能告诉我这张桌子在哪里吗 中断向量表位于: \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 向量表向量表={ ... .irq={
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
向量表向量表={
...
.irq={
IRQ_处理器
}
};
STM32F4的IRQ\u处理程序在lib/stm32/f4/vector\u nvic.c
文件中定义。此文件在构建库后可用(它是用脚本生成的)。在此文件中,您可以看到如下内容:
#pragma weak adc_isr = blocking_handler
#定义IRQ#U处理程序\
[NVIC\u DMA1\u STREAM0\u IRQ]=DMA1\u STREAM0\u isr\
[NVIC\U ADC\U IRQ]=ADC\U isr\
...
像dma1\u stream0\u isr()
和adc\u isr()
这样的函数定义如下:
#pragma weak adc_isr = blocking_handler
因此,默认情况下,这些函数只是阻塞处理程序。但是它们被定义为,因此您可以在代码中轻松地重新定义它们
还是用另一种方式
正如上面所讨论的,它归结为下一步:您只需要在代码中定义具有正确名称的中断处理函数(),并且您的函数将自动放置到中断向量表中
例如,如果您想处理UART2中断,只需在代码中的某个地方实现usart2\u isr()
函数。有关ISR函数名的完整列表,请参阅include/libopencm3/stm32/f4/nvic.h
。但这些名字通常都很直白
此外,请查看该项目。很可能你会在那里找到你需要的东西。构建一些东西,分解它,在源代码树中找到那些标签。谢谢Sam。很遗憾,libopencm3文档中缺少或隐藏了这个解释。中断例程名称的列表实际上在include/libopencm3/stm32/f4/irq.json中定义