[Linux驱动]GPIO的操作

一、前言

在开发中经常会涉及到GPIO的操作,虽然说大部分驱动代码都是厂家提供,但在适配时需要增加控制,或者控制逻辑出现了偏差,都是需要涉及gpio的操作。

二、示例代码操作

//static声明一个全局变量
static int gpio_sim = 0;
//通过名称从dts解析gpio属性并返回gpio编号。参1是指向gpio的设备结点 参2是dts的属性名称
gpio_sim = of_get_named_gpio_flags(pdev->dev.of_node, "gpio-sim", 0, NULL);
//申请gpio,获取gpio的访问权
gpio_request(gpio_sim, "gpio-sim");
//将gpio设为输出,参1是gpio号,参2是默认输出高电平
gpio_direction_output(gpio_sim, 1);
//将gpio设为输入
gpio_direction_input(gpio_sim);
//将gpio设为低电平
gpio_set_value(gpio_sim, 0);
//将gpio设为高电平
gpio_set_value(gpio_sim, 1);

三、adb或者串口操作GPIO

在开发中需要验证gpio的拉高拉低是否正常,但是总不能编译后再操作吧,所以采用快速操作gpio的方法。打开adb或者串口,进入sys/class/gpio目录

//添加gpio37接口,添加后该目录会有gpio37目录
echo 37 > export
//打开gpio37
cd gpio37
//将引脚配置为输入
echo "in" > direction
//将引脚配置为输出
echo "out" > direction
//设为高电平
echo 1 > value
//设为低电平
echo 0 > value

四、查看gpio

 操作完gpio后可以敲cat d/gpio来查看gpio状态,例如:

gpio-166 (                    |horn-gpio           ) out hi

 可以知道这个gpio为高,或者用万用表结合pcb来验证。

五、总结

这是基础中的基础,做这个笔记就是要让自己牢记。

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在Linux上使用Qt编写GPIO驱动,您可以按照以下步骤进行操作: 1. 首先,确保您的系统已经配置了GPIO驱动。如果没有,请参考相关文档来完成配置。 2. 在Qt项目中,使用QProcess类或者编写一个简单的shell脚本来调用GPIO命令行工具,如gpiogpiod等。这些工具可以用来读取和设置GPIO引脚的状态。 3. 在Qt代码中,使用QIODevice类来读取和写入GPIO设备文件。这些设备文件通常位于/sys/class/gpio目录下,每个GPIO引脚都有一个对应的文件。 例如,要设置GPIO引脚为输出模式并设置高电平,可以使用以下代码片段: ```cpp QFile gpioExportFile("/sys/class/gpio/export"); if (gpioExportFile.open(QIODevice::WriteOnly)) { gpioExportFile.write("gpio123"); // 替换为目标GPIO引脚号 gpioExportFile.close(); } QFile gpioDirectionFile("/sys/class/gpio/gpio123/direction"); if (gpioDirectionFile.open(QIODevice::WriteOnly)) { gpioDirectionFile.write("out"); gpioDirectionFile.close(); } QFile gpioValueFile("/sys/class/gpio/gpio123/value"); if (gpioValueFile.open(QIODevice::WriteOnly)) { gpioValueFile.write("1"); gpioValueFile.close(); } ``` 4. 根据需要,您可以使用信号与槽机制来实现GPIO状态的监测和更新。 请注意,GPIO驱动的具体实现可能因您使用的硬件平台和Linux发行版而有所不同。因此,您需要根据您的具体情况进行相应的调整和修改。此外,确保以root权限运行您的应用程序,以便具有对GPIO设备文件的访问权限。 希望这些信息能对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值