树莓派5 GPIO

wiringpi 不能用了,控制GPIO有什么为法呢?
发现:gpiod这个库还不错
sudo apt install gpiod libgpiod-dev
安装成功后可以用: gpiodetect gpioinfo命令查看是否安装成功
但我想用原生的树莓派接口来控制于是就下载了gpiod的源码进行查看,最后完成
了树莓派gpio的原生接口开发调试,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/gpio.h>
#include <sys/ioctl.h>
#include <string.h>

typedef enum gpio_pin_enum
{
    GPIO_PIN_02 = 2,
    GPIO_PIN_03,
    GPIO_PIN_04,
    GPIO_PIN_05,
    GPIO_PIN_06,
    GPIO_PIN_07,
    GPIO_PIN_08,
    GPIO_PIN_09,
    GPIO_PIN_10,
    GPIO_PIN_11,
    GPIO_PIN_12,
    GPIO_PIN_13,
    GPIO_PIN_14,
    GPIO_PIN_15,
    GPIO_PIN_16,
    GPIO_PIN_17,
    GPIO_PIN_18,
    GPIO_PIN_19,
    GPIO_PIN_20,
    GPIO_PIN_21,
    GPIO_PIN_22,
    GPIO_PIN_23,
    GPIO_PIN_24,
    GPIO_PIN_25,
    GPIO_PIN_26,
    GPIO_PIN_27,
}gpio_pin_e;

typedef struct gpio_args_sruct
{
    int fd;
    struct gpiohandle_data data[27];
    struct gpiohandle_request req[27];
}gpio_args_s;
void api_gpio_init(gpio_args_s *args)
{
    // 打开设备
    args->fd = open("/dev/gpiochip0", O_RDWR | O_CLOEXEC);
}
int api_gpio_set_cfg(gpio_args_s *args, unsigned int pin_num)
{
    int ret = 0;
    struct gpiohandle_request *req = &(args->req[pin_num]);

    if(req->fd <= 0)    // 没有设置为资源才进行设置
    {
        req->lineoffsets[0] = pin_num;
        req->flags |= GPIOHANDLE_REQUEST_OUTPUT;
        req->lines = 1;
        ret = ioctl(args->fd, GPIO_GET_LINEHANDLE_IOCTL, req);
        if (ret < 0)
        {
            perror("set pin dir fled");
            return -1;
        }
    }

}

int api_gpio_set_val(gpio_args_s *args, unsigned int pin_num, int val)
{
    int ret = 0;
    struct gpiohandle_request *req = &(args->req[pin_num]);
    args->data[pin_num].values[0] = val; //设置输出电平
    ret = ioctl(req->fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &(args->data[pin_num]));
    if (ret < 0)
    {
        perror("set pin val fled");
        return -1;
    }
}

void api_gpio_close(int fd)
{
    close(fd);
}


#if 0  //测试代码
gpio_args_s g_args;
int main()
{
    
    api_gpio_init(&g_args);
    api_gpio_set_cfg(&g_args, GPIO_PIN_02);
    api_gpio_set_cfg(&g_args, GPIO_PIN_03);
    int val=0;
    while (1)
    {
        val = !val;

        api_gpio_set_val(&g_args, GPIO_PIN_02, val);
        api_gpio_set_val(&g_args, GPIO_PIN_03, val);
        usleep(1000);
    }
    api_gpio_close(g_args.fd);
    return 0;
}
#endif
 req->lineoffsets[0] = pin_num;
        req->flags |= GPIOHANDLE_REQUEST_OUTPUT;
        req->lines = 1;

这个代码块中,req->lineoffsets[0]只能对其第0个原素赋值,req->lines 只能等于1,换成其他的就会报错,不知道为什么
后面再研究吧,目前是能满足输出高底电平了

如果在使用 WangEditor 编辑器时,设置了文字颜色、背景色、字体大小或字体类型等样式无效,可能是因为缺少相应的 CSS 样式。 解决方法如下: 1. 打开 WangEditor 的 CSS 文件,一般是 `wangeditor.min.css` 或 `wangeditor.css`。 2. 确认文件中是否包含了设置样式的 CSS 规则,例如: ```css /* 设置字体颜色 */ .wangEditor-txt-color1 { color: #ff0000; } /* 设置背景颜色 */ .wangEditor-bgcolor1 { background-color: #ffff00; } /* 设置字体大小 */ .wangEditor-font-size-16 { font-size: 16px; } /* 设置字体类型 */ .wangEditor-font-family-simkai { font-family: simkai; } ``` 3. 如果 CSS 文件中没有包含这些 CSS 规则,可以手动添加,也可以从官方提供的样式库中复制相应的样式,例如: ```html <!-- 引入样式库 --> <link rel="stylesheet" type="text/css" href="https://unpkg.com/wangeditor/release/wangEditor.min.css"> <!-- 设置字体颜色 --> <div class="wangEditor-txt-color1">这是一段红色文字</div> <!-- 设置背景颜色 --> <div class="wangEditor-bgcolor1">这是一段黄色背景文字</div> <!-- 设置字体大小 --> <div class="wangEditor-font-size-16">这是一段16px字号的文字</div> <!-- 设置字体类型 --> <div class="wangEditor-font-family-simkai">这是一段宋体文字</div> ``` 4. 如果 CSS 文件中有这些 CSS 规则,但样式仍然无效,可能是因为样式被覆盖了。可以尝试使用 `!important` 关键字强制应用样式,例如: ```css .wangEditor-txt-color1 { color: #ff0000 !important; } ``` 5. 保存文件并重新加载 WangEditor 编辑器,就可以看到设置的样式了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值