这是我的配置:
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = 8;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOJ, &GPIO_InitStruct);
当我把信号放在输入引脚上(平方,2Hz,3.3Vp-p)时,我每250毫秒就会收到一个中断,因此信号的每一个上升和下降的边缘。我改变了测试信号占空比,以测试它是否真的发生了,并证实了这一点。我得到了两边的中断。
我甚至调试了HAL驱动程序来测试它是否做了我认为它所做的事情。是的,它似乎正确地配置了EXTI,只针对我的引脚下降的边缘。
造成这种行为的原因可能是什么?我的设备是STM32H747I-迪斯科发现板,使用TouchGFX软件进行演示。该软件工作正常,我测试了它的时间测量之间的其他计时器中断。
我监测示波器上的测试信号,以确保我的引脚上的输入信号是正确的。我试图在同一个端口上使用另一个引脚,但我观察到了相同的行为。我在信号的上升和下降边缘都会被中断,尽管引脚被配置为只在下降的边缘触发中断。
我也只是用上升的优势来测试这个案例。在这个例子中,我得到了两边的中断。
发布于 2022-07-17 15:50:38
这个问题被证明是一个硬件错误,我忽略了一个电压尖峰。STM32 EXTI输入始终正确工作。确实有一个虚假的下降边缘。
模拟问题图,10n电容器引起电压尖峰和杂散边缘检测。在实际电路中,当使用数字示波器时,时间基太长,无法捕捉尖峰--信号看起来像一个合适的方波。缩短时间后,我注意到了尖峰。如图中所示,这种行为可以很容易地在电路模拟器中模拟:
从电路中移除电容器解决了这个问题。
为了避免在输入屏蔽线上产生噪声和其他杂散信号,可以使用屏蔽线。对实际电路进行了测试,该电路在没有电容器的情况下正常工作。
光耦合器只是用于实际机器的光学传感器的简化模型.
https://stackoverflow.com/questions/72984947
复制相似问题