Linux下用文件IO的方式操作GPIO

本文详细介绍了如何在Linux环境下通过文件IO操作GPIO,包括内核支持、编译烧写、GPIO导出、全志芯片管脚定义、模式设置与电平控制。适合GPIO初学者和嵌入式开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:需要在内核下支持,具体操作如下图,选择 /sys/class/gpio。

在这里插入图片描述

第二步:编译好内核,然后烧写到开发板。

第三步:进入目录 /sys/clas/gpio/ 下,使用命令:cd /sys/clas/gpio/

第四步:使用命令指定编号得引脚导出,作为GPIO使用,具体管脚定义根据自己的开发板和使用的内核代码决定。以下是全志的芯片管脚定义。

//------------------------------------GPIO的定义--------------------------------------
#define SUNXI_BANK_SIZE 32
#define SUNXI_PA_BASE 0
#define SUNXI_PB_BASE 32
#define SUNXI_PC_BASE 64
#define SUNXI_PD_BASE 96
#define SUNXI_PE_BASE 128
#define SUNXI_PF_BASE 160
#define SUNXI_PG_BASE 192
#define SUNXI_PH_BASE 224
#define SUNXI_PI_BASE 256
#define SUNXI_PJ_BASE 288
#define SUNXI_PK_BASE 320
#define SUNXI_PL_BASE 352
#define SUNXI_PM_BASE 384
#define SUNXI_PN_BASE 416
#define SUNXI_PO_BASE 448
#define AXP_PIN_BASE 1024

//------------------------------------GPIO管脚具体编号--------------------------------------
#define GPIOA(n) (SUNXI_PA_BASE + (n))
#define GPIOB(n) (SUNXI_PB_BASE + (n))
#define GPIOC(n) (SUNXI_PC_BASE + (n))
#define GPIOD(n) (SUNXI_PD_BASE + (n))
#define GPIOE(n) (SUNXI_PE_BASE + (n))
#define GPIOF(n) (SUNXI_PF_BASE + (n))
#define GPIOG(n) (SUNXI_PG_BASE + (n))
#define GPIOH(n) (SUNXI_PH_BASE + (n))
#define GPIOI(n) (SUNXI_PI_BASE + (n))
#define GPIOJ(n) (SUNXI_PJ_BASE + (n))
#define GPIOK(n) (SUNXI_PK_BASE + (n))
#define GPIOL(n) (SUNXI_PL_BASE + (n))
#define GPIOM(n) (SUNXI_PM_BASE + (n))
#define GPION(n) (SUNXI_PN_BASE + (n))
#define GPIOO(n) (SUNXI_PO_BASE + (n))
#define GPIO_AXP(n) (AXP_PIN_BASE + (n))

第五步:输入命令指定管脚,比如指定PE0管脚,对应的编号为128+0:echo 128 > export 可以发现,目录下出现了gpio128,如果执行命令后没有反应,表示当前的GPIO已经用作其他的功能,例如作为IIC的引脚等。

第六步:进入gpio128: cd gpio128, 设置输出还是输入模式 , 比如要输出模式,使用命令:echo “in” > direction 输入模式:echo “out” > direction

第七步:设置gpio口的电平或者获取管脚的高低电平,比如输出高电平,那么就是使用命令:echo 1 > value 输出低电平,则使用命令:echo 0 > value 如果要获取高电平,那么使用命令:cat value (注意:需要先设置输出模式才可以)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值