确定GPIO EXTI处理程序内的端口

时间:2015-12-13 10:29:31

标签: gpio interrupt-handling stm32f4discovery

如何确定处理程序中生成中断的端口?例如,在EXTI0_IRQHandler中,我如何确定中断是通过PA0,PB0还是PC0生成的?是否可以在同一EXTI线上处理来自这些引脚的中断(如果只有一个引脚一次产生一个中断,那么就没有混淆)?

2 个答案:

答案 0 :(得分:2)

不,只能将PA0,PB0等中的一个配置为EXTI0源。请参阅SYSCFG_EXTICR *寄存器的说明,STM32F4 Reference Manual中的第9.2.3节。

如果中断处理程序在多个EXTI源(如EXTI9_5_IRQHandler和EXTI15_10_IRQHandler)之间共享,则读取EXTI_PR寄存器以确定哪个源生成了中断。

答案 1 :(得分:0)

我对您的主板不熟悉,但通常您希望从处理程序中查询中断控制器以确定实际的中断源。

您可以在ARM站点上找到一个相当容易理解的示例(但您的硬件可能与此处讨论的控制器不同):http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/15708.html

示例中的设置在.zip归档文件的README中讨论。简而言之,这显示了使用向量中断控制器的中断处理以及通过主要VIC处理级联控制器。