【Linux】 Orangepi GPIO开发详解

本文详细介绍Orangepi GPIO驱动的三种方法:wiringPi库、内核(sysfs)及自定义底层驱动。涵盖wiringPi库安装、C语言驱动、sysfs驱动板载LED及自定义底层驱动流程。


最近新入手了一个OrangePi ,准备学习一下linux下的驱动开发,不过由于刚开始入门,踩到的坑有点多。


硬件环境:OrangePi PC Puls
开发工具:gcc
开发环境:vscode + Remote SSH ( 不得不说vscode真的香啊~)


1. wiringPi库驱动

在刷入linux镜像之后,第一个程序就是编写Blink程序!

安装wiringPi库

首先克隆orangepi的wiringpi库:

#获取wiringpi库
git clone https://github.com/orangepi-xunlong/wiringOP.git
#运行脚本自动编译wiringOP库
./wiringOP/build
#根据板卡型号进行选择,我是orangepi pc puls 选择3

安装完成后输入gpio readall可以查看orangepi所有了引脚序号,在后面的程序中需要使用这个序号。
可以看到下面输出:
在这里插入图片描述
这个表是引出IO的信息:
GPIO:是指内核的序号。具体的计算方法为:(字母在字母表中的位置- 1) * 32 + 引脚序号
如PC07 引脚编号为:(3 - 1) * 32 + 7 = 71。
wPi:是在wiringpi函数中使用的引脚序号,
V:是当前IO的输出电平

命令行驱动GPIO

使用wiringpi命令控制IO状态:

 # 配置GPIO12(对应wPi序号0)为为输出模式
 gpio mode 0	out	
 # 控制IO输出高电平,格式为gpio read <pin> <value>
 gpio write	0	1
 #读取IO状态
 gpio read 0
 # 以500ms的频率翻转IO状态
 gpio blink 0

C语言驱动GPIO

在使用命令行运行Blink程序之后开始通过C语言编程,点亮led
代码如下:

#include <stdio.h>
#include <wiringPi.h>

#define LED 0		//接到树莓派映射引脚0上,对应GPIO12

int main(void)
{
   
   
    printf("OrangePi blink...\r\n");
    wiringPiSetup();		//初始化GPIO配置
    pinMode(LED, OUTPUT);	//配置IO模式

    while(1)
    {
   
   
         digitalWrite(LED, HIGH);	//控制GPIO
         delay(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值