我在STM32F4上的项目中使用了STM32F4。我以前使用过标准外设库和ST开发的更新的硬件抽象层。
在这些库中,您有带有向量表定义的程序集文件(启动文件)。
这就是我对libopenCM3所缺少的东西。请告诉我这张桌子在哪里找到好吗?还是换了别的方法?
我真的需要在我的项目中使用中断。
谢谢。
发布于 2016-07-29 14:31:17
请告诉我这张桌子在哪里找到好吗?
中断向量表位于lib/cm3/vector.c中
__attribute__ ((section(".vectors")))
vector_table_t vector_table = {
...
.irq = {
IRQ_HANDLERS
}
};并在IRQ_HANDLERS文件中定义了STM32F4的lib/stm32/f4/vector_nvic.c。这个文件将在构建库后可用(它是用H脚本生成的)。在这个文件中,您可以看到如下内容:
#define IRQ_HANDLERS \
[NVIC_DMA1_STREAM0_IRQ] = dma1_stream0_isr, \
[NVIC_ADC_IRQ] = adc_isr, \
...像dma1_stream0_isr()和adc_isr()这样的函数定义如下:
#pragma weak adc_isr = blocking_handler因此,默认情况下,这些函数只是阻塞处理程序。但是它们被定义为瘦弱,所以您可以很容易地在代码中重新定义它们。
还是换了别的方法?
正如上面所讨论的,它归结为下一步:您只需要在代码中定义具有正确名称的中断处理程序函数(ISR),您的函数将被自动放置到中断向量表中。
例如,如果您想处理UART2中断,只需在代码中的某个地方实现usart2_isr()函数即可。对于ISR函数名的整个列表,请参考include/libopencm3/stm32/f4/nvic.h。但这些名字通常都很直截了当。
另外,查看libopencm3 3-实例项目。很有可能你会在那里找到你需要的东西。
https://stackoverflow.com/questions/37710085
复制相似问题