Raspberry Pi GPIO在一段时间后停止工作

时间:2018-10-17 22:04:44

标签: raspberry-pi raspberry-pi3 raspberry-pi2 gpio

在Raspberry PI上使用GPIO库并具有如下示例代码时:

while True:
    GPIO.setup(21, GPIO.OUT)
    pwm = GPIO.PWM(21, 50)
    pwm.start(0)

    for i in range(0, 101, 2):
        pwm.ChangeDutyCycle(i)
        time.sleep(0.03)
    for i in range(100, -1, -2):
        pwm.ChangeDutyCycle(i)
        time.sleep(0.03)

    pwm.stop()
    GPIO.cleanup(21)

    time.sleep(1)

一段时间后,代码可能会突然停止。没有错误,只是不再识别通过pwm进行的更改。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

此问题已在旧的sourceforge存储库中提到:

https://sourceforge.net/p/raspberry-gpio-python/tickets/111/

https://sourceforge.net/p/raspberry-gpio-python/tickets/94/

这是因为GPIO库默认情况下会为每个调用创建一个新的pthread,而不会随后进行清理,但是线程数可能会限制为250个左右。

我创建了这个仓库(https://github.com/wuestkamp/raspberry-gpio-python)的一个分支,它解决了这个问题,并包含有关如何在您的PI上使用它的说明。