STM32中的GPIO额外中断
GPIO extra interrupt in STM32
我看到在STM32F103系列中,GPIO额外中断设置为EXTI。并且 GPIOx_0 (x=A,B,C...) 设置为 EXTI0。举个例子,如果我想使用PA0和PB0作为中断输入,我可以同时设置它们为EXTI0吗?我的意思是在EXTI0_Handler函数中我读取PA0和PB0的输入寄存器的值来判断哪一个输入电平我想通过if...else
来承载不同的功能。我在STM8中成功使用它,但在STM32中似乎有点问题。你能帮助我吗?谢谢
答案把问题说清楚了。图片举例说明为什么设置不同的管脚会导致四个位发生变化。如果您配置其他引脚,您可以看到这四个位相互影响状态。我之前忽略了这个问题。
如果您查看 STM32F103 Reference Manual p. 209,你会看到实际上有一个多路复用器决定是否将PA0,PB0,...或PG0连接到EXTI0信号:
STM32F103 ExtI0 schematic
这意味着您不能将 PA0 和 PB0 都连接到 EXTI0。事实上,复用功能 input/output 寄存器 (AFIO) 中有四个特定位,可让您选择将哪个引脚连接到 EXTI0 信号。这里,这些位位于控制寄存器 AFIO_EXTICR1 中。有关详细信息,请参阅同一文档中的 AFIO 寄存器映射。
现在我不知道您使用的是哪种设置,但我记得,我有针对不同中断请求例程(EXTI0、EXTI1 等)的单独函数。
我看到在STM32F103系列中,GPIO额外中断设置为EXTI。并且 GPIOx_0 (x=A,B,C...) 设置为 EXTI0。举个例子,如果我想使用PA0和PB0作为中断输入,我可以同时设置它们为EXTI0吗?我的意思是在EXTI0_Handler函数中我读取PA0和PB0的输入寄存器的值来判断哪一个输入电平我想通过if...else
来承载不同的功能。我在STM8中成功使用它,但在STM32中似乎有点问题。你能帮助我吗?谢谢
答案把问题说清楚了。图片举例说明为什么设置不同的管脚会导致四个位发生变化。如果您配置其他引脚,您可以看到这四个位相互影响状态。我之前忽略了这个问题。
如果您查看 STM32F103 Reference Manual p. 209,你会看到实际上有一个多路复用器决定是否将PA0,PB0,...或PG0连接到EXTI0信号:
STM32F103 ExtI0 schematic
这意味着您不能将 PA0 和 PB0 都连接到 EXTI0。事实上,复用功能 input/output 寄存器 (AFIO) 中有四个特定位,可让您选择将哪个引脚连接到 EXTI0 信号。这里,这些位位于控制寄存器 AFIO_EXTICR1 中。有关详细信息,请参阅同一文档中的 AFIO 寄存器映射。
现在我不知道您使用的是哪种设置,但我记得,我有针对不同中断请求例程(EXTI0、EXTI1 等)的单独函数。