You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

树莓派4 GPIO配置上拉后无外接时自动变为低电平且无法恢复的问题求助

树莓派4 GPIO配置上拉后无外接时自动变为低电平且无法恢复的问题求助

大家好,我现在遇到了一个树莓派GPIO的奇怪问题,折腾了好一阵没搞明白,想请教下各位大佬。

我的需求是给树莓派4接两个常开按钮,先拿GPIO16来测试上拉逻辑是否正常,操作步骤如下:

  1. 初始状态检查
    pinctrl命令查看GPIO初始状态,输出如下:

    15: a5    pu | hi // GPIO15 = RXD1
    16: ip    pd | lo // GPIO16 = input
    17: ip    pd | lo // GPIO17 = input
    

    可以看到GPIO16默认是下拉配置,状态为低,符合预期。

  2. 配置上拉输入
    执行命令pinctrl set 16 ip pu将GPIO16设置为上拉输入,再次查看状态:

    15: a5    pu | hi // GPIO15 = RXD1
    16: ip    pu | hi // GPIO16 = input
    17: ip    pd | lo // GPIO17 = input
    

    此时GPIO16为上拉配置,状态为高,和预期一致。

  3. 编写Python测试脚本
    我写了一个简单的循环读取GPIO状态的脚本:

    import time
    import RPi.GPIO as GPIO
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    button = 16
    GPIO.setup(button, GPIO.IN, GPIO.PUD_UP)
    
    while True:
        button_state = GPIO.input(button)
        if button_state == GPIO.HIGH:
            print ("HIGH")
        else:
            print ("LOW")
        time.sleep(0.5)
    

    用杜邦线把GPIO16和旁边的GND引脚短接时,脚本正常输出LOW;断开后输出HIGH,一开始一切都正常。

问题出现

突然之间,就算我没给GPIO16接任何线,脚本也一直输出LOW。我再次用pinctrl命令查看状态,结果如下:

15: a5    pu | hi // GPIO15 = RXD1
16: ip    pu | lo // GPIO16 = input
17: ip    pd | lo // GPIO17 = input

明明GPIO16还是配置为上拉,但状态却变成了低电平!更奇怪的是,我重启树莓派后这个状态也没恢复,换了另一个GPIO引脚测试,居然也出现了同样的情况!

有没有大佬遇到过类似的情况?这到底是硬件引脚烧了?还是系统或者GPIO库的问题?麻烦给点排查思路,谢谢大家了!

火山引擎 最新活动