Orangepi GPIO 驱动开发详解
最近新入手了一个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(

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

被折叠的 条评论
为什么被折叠?



