如何在STM32中设置GPIO事件标志?

如何在STM32中设置GPIO事件标志?,stm32,stm32f4,cubemx,Stm32,Stm32f4,Cubemx,是否可以配置GPIO输入,在检测到上升沿或下降沿时设置标志,而不中断CPU?然后我可以检查主超级循环中标志的状态?CubeMX中有一个选项可以将GPIO模式配置为“具有上升/下降沿触发检测的外部事件模式”,但我不确定如何读取事件标志。这是实现这一点的正确模式吗?我不确定事件模式(以前没有使用过),但您也可以使用 外部中断模式带…只要您未激活NVIC中的IRQ处理程序,CPU不会因任何引脚更改而中断 如果发生了事件/中断,可以在EXTI\u PR寄存器中找到信息。 (请参阅参考手册12.3.6)我

是否可以配置GPIO输入,在检测到上升沿或下降沿时设置标志,而不中断CPU?然后我可以检查主超级循环中标志的状态?CubeMX中有一个选项可以将GPIO模式配置为“具有上升/下降沿触发检测的外部事件模式”,但我不确定如何读取事件标志。这是实现这一点的正确模式吗?

我不确定事件模式(以前没有使用过),但您也可以使用
外部中断模式带…
只要您未激活NVIC中的IRQ处理程序,CPU不会因任何引脚更改而中断

如果发生了事件/中断,可以在
EXTI\u PR
寄存器中找到信息。
(请参阅参考手册12.3.6)

我不确定事件模式(以前没有使用过),但您也可以使用
外部中断模式带…
只要您未激活NVIC中的IRQ处理程序,CPU不会因任何引脚更改而中断

如果发生了事件/中断,可以在
EXTI\u PR
寄存器中找到信息。
(参见参考手册12.3.6)

如果您使用HAL库,您可以自行设置为
GPIO\u InitStruct.Mode=GPIO\u Mode\u EVT\u RISING\u fall
。。如果未启用中断,则轮询GPIO引脚;如
HAL\u GPIO\u ReadPin(GPIOx,GPIO\u PIN\u x)
如果您使用HAL库,您可以自行设置为
GPIO\u InitStruct.Mode=GPIO\u Mode\u EVT\u RISING\u fall
。。如果未启用中断,则轮询GPIO引脚;像
HAL_GPIO_ReadPin(GPIOx,GPIO_PIN_x)
一样,由于在事件模式下未设置
EXTI_PR
寄存器(参考手册RM0090)
“当所选边出现在事件行上时,会生成事件脉冲。与事件行对应的挂起位未设置。”
。所以我必须在NVIC中使用中断而不启用。是否可以分辨出检测到的边缘(上升或下降)?不幸的是,无法分辨出检测到的边缘。如果信号变化足够慢,可以使用管脚的实际电平来确定边缘(如果
IDR&pin
为真,则最后一个边缘为上升边缘:),或者可以使用两个管脚。一个用于检测上升沿,另一个用于检测下降沿。结果表明,在事件模式下,未设置
EXTI\u PR
寄存器(参考手册RM0090)
“当所选边缘出现在事件行上时,会生成事件脉冲。未设置与事件行对应的挂起位。”
。所以我必须在NVIC中使用中断而不启用。是否可以分辨出检测到的边缘(上升或下降)?不幸的是,无法分辨出检测到的边缘。如果信号变化足够慢,可以使用管脚的实际电平来确定边缘(如果
IDR&pin
为真,则最后一个边缘为上升边缘:),或者可以使用两个管脚。一个用于检测上升边缘,另一个用于检测下降边缘。