在 STM32H7 的 GPIO 上检测上升沿的下降沿和上升沿之间的最短时间

Posted

技术标签:

【中文标题】在 STM32H7 的 GPIO 上检测上升沿的下降沿和上升沿之间的最短时间【英文标题】:Minimum time between falling and rising edge to detect a rising edge on a GPIO on STM32H7 【发布时间】:2021-06-20 07:11:49 【问题描述】:

在我的 STM32H753 上,我在其中一个 GPIO 的上升沿启用了中断。一旦我得到中断(当然前提是处理程序确认 EXTI 外设中的 IT),当信号再次变低时,我将能够在下一个上升沿得到另一个中断。

我的问题是:下降沿和上升沿之间的最短持续时间是多少才能被 EXTI 检测到?数据表指定了 IO 的许多特性,特别是考虑输入低电平或高电平的电压值,但我没有找到这个时序。

谢谢

【问题讨论】:

这有点猜测,所以我将其放在评论中而不是作为答案:GPIO 输入是在 AHB 时钟上采样的。如果您在一个 AHB 周期清除中断标志,我希望在下一个 AHB 周期出现状态时检测到所选边沿。即:如果与时钟一致,则可以检测到宽度无限小的脉冲,保证检测到比AHB周期长的脉冲。 【参考方案1】:

对于电子部分,您需要参考您的 MCU 数据表。 但是我相信您需要有关软件部分的信息:

一旦您通过清除 IRQPending 标志或通过 HAL API 确认新的 GPIO IRQ (EXTI),您将能够处理新的 GPIO IRQ (EXTI)。

如果发生了两个 IRQ 而您还没有清除 IRQPending 标志,那么它们将被视为一个 IRQ。对此类延迟进行基准测试取决于您使用的时钟速度和 EXTI_IRQ_Handler 例程的复杂性。

【讨论】:

这不是承认前一个 IRQ 的问题。确认通常会降低 EXTI 和 NVIC 之间的信号,因此它允许 EXTI 外设断言另一个可由 NVIC 检测到的中断。但我的问题是关于 EXTI 检测 GPIO 信号上非常短的脉冲的能力。正如我所提到的,我没有在数据表中找到信息。

以上是关于在 STM32H7 的 GPIO 上检测上升沿的下降沿和上升沿之间的最短时间的主要内容,如果未能解决你的问题,请参考以下文章

STM32H7视频教程第9期:STM32H7的GPIO专题,通过驱动源码,参考手册,数据手册应用笔记系统学习GPIO知识点(2022-03-06)

BSP视频教程STM32H7视频教程第10期:STM32H7的GPIO专题,非阻塞式驱动编程思想,按键FIFO,蜂鸣器驱动的新式玩法(2022-03-23)

STM32H7教程第41章 STM32H7的BDMA应用之控制任意IO做PWM和脉冲数控制

STM32H7教程第43章 STM32H7的DMA应用之双缓冲控制任意IO和脉冲数控制

STM32H7第10章 ThreadX任务栈大小确定及其溢出检测

STM32H7 在复位后不久尝试擦除 bank 1、扇区 0 时挂起