工具与软件:
您好!
GPIO 中断函数存在问题。 我将使用端口1引脚0、1和2、这些引脚通过1K 欧姆电阻进行上拉。
每当引脚变为低电平时、就会发生中断、但现在它会随机触发。 但是、当我在调试模式下运行代码并在中断函数中放置一个断点时、它会正常工作。
问题可能是什么、我如何解决?
此外、我使用万用表进行测试、方法是将一个探针连接到电路板上的接地引脚、将另一个探针连接到控制器引脚(P1.1)。 在这种情况下、中断运行良好、背后的原因是什么?
谢谢!
Anbu
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
GPIO 中断函数存在问题。 我将使用端口1引脚0、1和2、这些引脚通过1K 欧姆电阻进行上拉。
每当引脚变为低电平时、就会发生中断、但现在它会随机触发。 但是、当我在调试模式下运行代码并在中断函数中放置一个断点时、它会正常工作。
问题可能是什么、我如何解决?
此外、我使用万用表进行测试、方法是将一个探针连接到电路板上的接地引脚、将另一个探针连接到控制器引脚(P1.1)。 在这种情况下、中断运行良好、背后的原因是什么?
谢谢!
Anbu
您不会看到使用万用表、您需要一个示波器。
https://www.allaboutcircuits.com/textbook/digital/chpt-4/contact-bounce/
大多数开关会指定它们反弹的时间、有多种方法可以处理它、例如在接触反弹时间内锁定中断。

(这适用于 Cherry MX1)
如果你谷歌"开关反弹"你会得到(很多)描述/解决方案比我有更好. 简而言之:当(物理)开关上的触点闭合时、将会有许多短暂的触点(电弧/ricochet)、每个触点都将记录在 PxIFG 中。 持续时间为微秒级、可以持续毫秒数。 您需要等待、直到这种反弹完成、以了解开关的位置。 (也很容易忘记开关在释放时也会抖动。)
您的万用表的平均值超过(类似于)一两秒钟、因此它看不到一个微秒长的事件。