根据韦老师驱动基础入门课,自己写了个led和key的代码

我使用单key和单led实现设备树,驱动代码和APP代码,可以正常运行,我用两个按键和单led实现设备树和驱动代码,发现驱动代码get了第二个按键的desc后,去设置这个IO口会打印显示无效IO口的内核 log,但是我已经实现了单key和单led的代码,按我的理解这样写应该是么问题,不知道问题出在哪,有大佬帮我分析一下吗,源码和设备树都打包见目录(没办法上传,只能用百度云了),用的板子是IM6ULL_PRO,管脚(led 5,3 ) (key1, 5,1) (key2, 4,14)链接:百度网盘 请输入提取码
提取码:5310

dts 中,将箭头指的地方注释掉,再实验看看效果?

你的意思是这个IO口被占用了?,如果是的话,报的错误log应该是IO口被占用了,我试了一下我两个按键换了个顺序获取,始终是第二个获得desc无法设置方向(第一个获取的可以正常工作),报内核log gpiod_direction_input: invalid GPIO (errorpointer)

pinctrl_hog_2我搜了一下,这个配置没有被调用


把 1 修改为 0 试一下;

1 个赞

问题解决了,原因是key_gpio2 = gpiod_get_index(&dev->dev, “key2”,1, GPIOD_IN);,我调用这个搜的是key2,对key2-gpios来说,我是第0个设备

谢谢,问题解决了,是这个问题