Libgpiod库的使用,点亮LED

libgpiod库的使用

1.libgpiod库简介

官方的对libgpiod库介绍如下:

libgpiod - C library and tools for interacting with the linux GPIO
character device (gpiod stands for GPIO device)

Since linux 4.8 the GPIO sysfs interface is deprecated. User space should use
the character device instead. This library encapsulates the ioctl calls and
data structures behind a straightforward API.

以上的意思表明:libgpiod是用于与linux GPIO交互的C库和工具

​ 字符设备(gpiod代表GPIO设备)

由于linux 4.8,GPIO sysfs接口已被弃用。用户空间应该使用取而代之的是字符设备。

这个库封装了ioctl调用和简单API背后的数据结构。

GPIO(General Purpose Input/Output Port)通用输入输出接口

2.libgpiod相关结构体

(1)struct gpiod_chip

这个结构体代表支持的gpio芯片的相关信息

struct gpiod_chip {
struct gpiod_line **lines; //每个 gpio 口 gpiod_line 数组 lines,每一个gpio口对应一个line
unsigned int num_lines; //数组的个数

​ int fd; //设备句柄

​ char name[32]; //芯片的名称
​ char label[32]; //芯片的标签

};

(2)struct gpiod_line

struct gpiod_line {
unsigned int offset; //gpio口的偏移量
int direction; //gpio的方向
int active_state; //活动状态配置
int output_value; //最后写入 GPIO 的逻辑值
u32 info_flags;
u32 req_flags;
int state;
struct gpiod_chip *chip;
struct line_fd_handle *fd_handle;
char name[32];
char consumer[32];
};

3.libgpiod常见的函数解析

struct gpiod_chip* gpiod_chip_open_by_name(const
如果你想使用固件点亮LED灯,你可以按照以下步骤进行操作: 1. 首先,创建一个新的文件夹,用于存放LED灯的控制代码。例如,你可以创建一个名为"led"的文件夹。 2. 在"led"文件夹中创建两个文件,分别是"led.c"和"led.h"。这些文件将包含LED灯的控制函数。 3. 打开"led.h"文件,并在其中定义LED灯的引脚。根据引用中的说明,你可以将PF6、PF7和PF8引脚分别与RGB灯的R灯、G灯和B灯连接起来。 4. 在"led.h"文件中声明LED灯控制函数。根据你的需求,你可以创建函数来控制单个LED灯的亮灭,或者同时控制多个LED灯来混合成不同的颜色。 5. 打开"led.c"文件,并实现LED灯控制函数。根据引用中的示例代码,你可以使用GPIO来配置LED灯的引脚,并在main函数中测试LED灯的亮灭。 6. 在main函数中,你可以使用控制函数来点亮或熄灭LED灯。根据你的需求,你可以选择控制单个LED灯,或者轮流显示不同颜色的灯。 以下是使用固件点亮LED灯的示例代码: #include "./led/led.h" int main(void) { /* LED 端口初始化 */ LED_GPIO_Config(); /* 控制LED灯 */ while (1) { LED1( ON ); // 点亮LED1 Delay(0xFFFFFF); LED1( OFF ); // 熄灭LED1 Delay(0xFFFFFF); // 其他LED灯的控制... // 轮流显示不同颜色的LEDLED_RED; Delay(0xFFFFFF); LED_GREEN; Delay(0xFFFFFF); LED_BLUE; Delay(0xFFFFFF); // 其他颜色的控制... LED_RGBOFF; Delay(0xFFFFFF); } } void Delay(__IO uint32_t nCount) { for (; nCount != 0; nCount--); }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值