GPIO.setup pull_up_down 问题

场景是这样的-
定义一个-
input_pin = 21-
GPIO.setmode(GPIO.BOARD)-
GPIO.setup(input_pin, GPIO.IN,pull_up_down=GPIO.HIGH)-

value = GPIO.input(input_pin)-
预期在没有输入的情况下,预期这里的value 应该是 GPIO.HIGH-

但是事实上,却不是,pull_up_down 选项没有工作-
查看github上的代码-
https://github.com/D-Robotics/x5-hobot-io/blob/4ebc8dff6bd14b4012ae88ba63051552d9582004/hb\_gpio\_py/hobot-gpio/lib/python/Hobot/GPIO/gpio.py#L198-

def setup(channels, direction, pull_up_down=None, initial=None):

if not pin_mode:

raise RuntimeError(“No channel mode set”)

if direction not in DIRECTION_LIST:

raise ValueError(“Setup channel direction is invalid”)

if direction == OUT and pull_up_down:

raise RuntimeError("Pull-up and pull-down are not "

“supported in output mode”)

if type(channels) == list or type(channels) == tuple:

pin_names = copy.deepcopy(channels)

elif type(channels) == str or type(channels) == int:

pin_names =

pin_names.append(channels)

else:

raise TypeError(“The channel parameter is of the wrong type”)

for pin_name in pin_names:

if pin_info.__contains__(pin_name):

_cleanup_one(pin_name)

try:

pin_info[pin_name] = PinPro(pin_name)

except Exception as exc:

raise ValueError(“This channel was not found in this mode”)

_export_gpio(pin_name, direction)

if direction == OUT and initial:

output(pin_name, initial)-

这里的 pull_up_down 除了 用于 if direction == OUT and pull_up_down:

raise RuntimeError("Pull-up and pull-down are not "

“supported in output mode”)-
之外根本没有,用于后续操作,全局搜索 pull_up_down 也没有相关操作了

import sys-
import signal-
import Hobot.GPIO as GPIO-
import time-

def signal_handler(signal, frame):-
sys.exit(0)-

# 定义使用的GPIO通道:-
input_pin = 35-
# 禁用警告信息-
GPIO.setwarnings(False)-
def main():-
# Pin Setup:-
GPIO.setmode(GPIO.BOARD) # BOARD pin-numbering scheme-
GPIO.setup(input_pin, GPIO.IN,pull_up_down=GPIO.HIGH) # button pin set as input-

try:-
prev_value = None-
while True:-
# 读取管脚电平-
value = GPIO.input(input_pin)-
if value != prev_value:-
if value == GPIO.HIGH:-
value_str = “HIGH”-
else:-
value_str = “LOW”-
print(“Value read from pin {} : {}”.format(input_pin, value_str))-
prev_value = value-
time.sleep(1)-
finally:-
GPIO.cleanup() # cleanup all GPIOs-

if __name__ == ‘__main__’:-
signal.signal(signal.SIGINT, signal_handler)-
main()-

这是测试代码,要执行之后,如果输出, Value read from pin 35 : LOW 说明不对,没有按要求初始化输入引脚为上拉模式-
如果输出, Value read from pin 35 : HIGH, 才对,麻烦测试下,再确认是否解决

这个问题并没解决就直接,给标记已解决了?

https://developer.d-robotics.cc/rdk\_doc/Basic\_Application/03\_40pin\_user\_guide/40pin\_define-
这个文档的所有部分,都没有讲如何 在GPIO.setup(input_pin, GPIO.IN,pull_up_down) 执行初始 输入引脚时设置为上拉或者下拉模式-
现在的情况是,GPIO.setup(input_pin, GPIO.IN) 时,不同的,引用有的是 高电平,有的是低电平,没有办法定义它。

如果与手册描述的不符,请烧录最新的系统,以及在srpi-config命令中更新miniboot:RDK X5: 在srpi-config命令中,1-SystemOptions,S7-UpdateMiniBoot,来升级miniboot。

请参考手册的描述进行使用,不能超越API的限制去开发:https://developer.d-robotics.cc/rdk\_doc/Basic\_Application/03\_40pin\_user\_guide/40pin\_define

你好,这里描述的很清楚,Pull-up and pull-down are not "

"supported in output mode

是啊,就只是检查了,就没有做其它动作了啊,我是设置为 in 模式啊,不是out 模型,我需要在in 模型下, 初始化为 pull-up,你们那边有测试吗?-
我的需求是-

在设置引脚为 in 模式时,能指定上拉或者下拉,setup函数里接收了这个参数但是没有执行相应 行为啊

代码只是检查说,在out 模式下不支持 pull-up 和 pull-down-
这个 pull_up_down 参数是给 in 模式的,不是out 模式,和你这个回答没关系啊