You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:树莓派调用GPIO.add_event_detect时报RuntimeError错误

GPIO边缘检测失败问题

背景

这段距离轮旋转检测的代码之前在另一台Raspberry Pi Zero 2上能正常运行,现在换到当前设备就报错了,不想重新刷系统,想解决问题避免再踩坑。

出错代码

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

# 距离轮检测引脚
GPIO.setup(4, GPIO.IN)


def increaserev(channel):
    global counter
    counter += 1
GPIO.add_event_detect(4,GPIO.RISING, callback=increaserev)

单独运行这段代码仍会触发相同错误。

错误信息

Traceback (most recent call last):
    File "/home/pi/test.py", line 12, in <module>
        GPIO.add_event_detect(4,GPIO.RISING, callback=increaserev)
RuntimeError: Failed to add edge detection

已尝试的操作

  • 更新系统
  • 升级系统
  • 更换其他GPIO引脚
  • 禁用1-wire系统

可尝试的解决办法

  1. 检查权限:试试用sudo运行脚本,或者把当前用户加入gpio组(执行sudo usermod -aG gpio pi,重启后生效),确保拥有操作GPIO的权限。
  2. 排查硬件接线:确认距离轮传感器的接线无松动、短路情况,输入引脚能接收到有效信号。
  3. 查看引脚占用状态:安装raspi-gpio工具(sudo apt install raspi-gpio),然后执行raspi-gpio get 4查看引脚4的状态,确认未被其他服务或设备占用。
  4. 更换GPIO库:如果RPi.GPIO持续出问题,换成pigpio库试试,稳定性更好。先安装库:sudo apt install pigpio,启动服务:sudo systemctl start pigpiod,示例代码如下:
import pigpio

pi = pigpio.pi()

def increaserev(gpio, level, tick):
    global counter
    counter += 1

pi.set_mode(4, pigpio.INPUT)
pi.callback(4, pigpio.RISING_EDGE, increaserev)
  1. 检查系统GPIO配置:通过raspi-config进入配置界面,确认GPIO接口已启用,无其他外设(如I2C、SPI)占用冲突引脚。

内容的提问来源于stack exchange,提问作者Padduzaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:54:57