Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm STM32F4上的Libopencm3中断表_Arm_Interrupt_Stm32_Libopencm3 - Fatal编程技术网

Arm STM32F4上的Libopencm3中断表

Arm STM32F4上的Libopencm3中断表,arm,interrupt,stm32,libopencm3,Arm,Interrupt,Stm32,Libopencm3,我在STM32F4上的项目中使用libopenCM3。我使用了以前的标准外设库和由ST 在这些库中,您拥有具有向量表定义的程序集文件(启动文件) 这就是我在libopenCM3中缺少的内容。你能告诉我这张桌子在哪里吗?还是用另一种方式 我真的需要在我的项目中使用中断 谢谢 你能告诉我这张桌子在哪里吗 中断向量表位于: \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 向量表向量表={ ... .irq={

我在STM32F4上的项目中使用libopenCM3。我使用了以前的标准外设库和由ST

在这些库中,您拥有具有向量表定义的程序集文件(启动文件)

这就是我在libopenCM3中缺少的内容。你能告诉我这张桌子在哪里吗?还是用另一种方式

我真的需要在我的项目中使用中断

谢谢

你能告诉我这张桌子在哪里吗

中断向量表位于:

\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中定义