在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进行的更改。有人知道为什么会这样吗?
答案 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上使用它的说明。