树莓派使用文件IO操作GPIO SysFs方式

这段代码展示了如何在树莓派上通过SysFS接口进行GPIO的导出、取消导出、设置方向、写入和读取操作。主要函数包括gpio_export、gpio_unexport、gpio_direction、gpio_write和gpio_read,它们用于控制GPIO引脚的状态。在main函数中,程序会周期性地切换GPIO输出状态并延时,演示了GPIO的基本用法。
摘要由CSDN通过智能技术生成
0 前言
    本文描述如果通过文件IO sysfs方式控制树莓派 GPIO端口。通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。
    Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来。

    【相同与不同】
    本文和【 EasyARM i.mx28学习笔记——文件IO方式操作GPIO】内容相似,大部分代码相同。通过文件IO操作可以有效地避免平台差异,虽然EasyARM im287平台和树莓派完全不同,但是通过sysfs操作GPIO实现代码大致相同。
    和EasyARM im287不同,此处并没有使用交叉编译工具,有树莓派中的gcc工具链编译链接获得可执行文件,而EasyARM im287并不能这样操作。EasyARM im287采用busybox指令集,这也与树莓派中的debian指令集存在差异。

    【相关博文】

    【代码仓库】
    代码仓库位于bitbucket—— rpi-gpio-sysfs ,请使用Hg克隆或者直接下载zip包。请不要使用任何版本的IE浏览器访问链接,除非你已经知道所使用的IE浏览器符合HTML5标准。推荐使用谷歌或者火狐浏览器访问,若使用国产双核浏览器请切换到极速模式。
    【原理图示意】

图1 连线示意图
1 暴露GPIO操作接口
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. static int gpio_export(int pin)  
  2. {  
  3.     char buffer[BUFFER_MAX];  
  4.     int len;  
  5.     int fd;  
  6.   
  7.     fd = open("/sys/class/gpio/export", O_WRONLY);  
  8.     if (fd < 0) {  
  9.         fprintf(stderr, "Failed to open export for writing!\n");  
  10.         return(-1);  
  11.     }  
  12.   
  13.     len = snprintf(buffer, BUFFER_MAX, "%d", pin);  
  14.     if (write(fd, buffer, len) < 0) {  
  15.         fprintf(stderr, "Fail to export gpio!");  
  16.         return -1;  
  17.     }  
  18.      
  19.     close(fd);  
  20.     return 0;  
  21. }  

2 隐藏GPIO操作接口
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. static int gpio_unexport(int pin)  
  2. {  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值