当前位置: 首页 > article >正文

ARM驱动学习之22 字符类GPIO

                              ARM驱动学习之22 字符类GPIO


1.将“21_字符驱动”中的文件“char_driver.c”改为“CharDriverLeds.c”
Makefile也做修改
2.头文件
#include "CharDriverLeds.h"

#include <linux/gpio.h>
#include <plat/gpio-cfg.h>
#include <mach/gpio-exynos4.h>

3.c文件中定义结构体数组
static int led_gpios[] = {
       EXYNOS4_GPL2(0),EXYNOS4_GPK1(1),
};

#define LED_NUM ARRAY_SIZE(led_gpios)

4.chardevnode_ioctl操作:
switch(cmd)
{
    case 0:
    case 1:
        if (arg > LED_NUM){
            return -EINVAL;

        }
        gpio_set_value(led_gpios[arg],cmd);
        break;

    default:
    return -EINVAL;

}

5.GPIO_INIT:
static int gpio_init(void)
{
    int i = 0,ret = 0;
    for(i = 0;i < LED_NUM;i ++){
        ret = gpio_request(led_gpios[i],"LED");
        if(ret){
            printf("%s,GPIO failed");
        }
        else{
            s3c_gpio_cfgpin(led_gpios[i],S3C_GPIO_OUTPUT);
            gpio_set_value(led_gpios[i],1);
        }

    }
    return 0;

}

6.释放GPIO
for(i = 0;i < LED_NUM;i ++)
{
    gpio_free(led_gpios[i]);
}
7.应用文件invoke_char_gpios.c修改传参改变led状态
ioctl(fd,atoi(argv[1]),atoi(argv[2]));


http://www.kler.cn/news/313232.html

相关文章:

  • 智慧安防监控EasyCVR视频汇聚管理平台如何修改视频流分辨率?
  • 传输大咖44 | 云计算企业大数据迁移如何更安全高效?
  • docker-compose elasticsearch 集群搭建(用户登录+https访问)
  • Python 从入门到实战24(类的继承)
  • SCDN是服务器吗?SCDN防御服务器有什么特点?
  • 操作数据库
  • web前端-HTML常用标签-综合案例
  • kafka动态认证 自定义认证 安全认证-亲测成功
  • 【C#基础】函数传参大总结
  • 算法题总结(一)——二分查找专题
  • [深度学习]神经网络
  • 基于单片机热敏电阻PT100温度控制系统设计
  • SQL编程题复习(24/9/19)
  • 安装Kali Linux后8件需要马上安排的事
  • 门控循环单元(GRU)
  • MySQL高阶1873-计算特殊奖金
  • 【JS】ESMoudle机制与符号绑定
  • 传知代码-多示例AI模型实现病理图像分类
  • 加密与安全_HTTPS TLS 1.2 连接(RSA 握手)的整个过程解读
  • 前端面试CSS常见题目
  • 机器学习之非监督学习(四)K-means 聚类算法
  • 【Docker Nexus3】maven 私库
  • JAVA8新特性——Optional
  • Dockerfile部署xxljob
  • FactualSceneGraph场景图生成
  • OpenAI或于9月24日发布ChatGPT高级语音模式
  • 小白src挖掘 | 记某证书站的虚拟仿真实验平台
  • 提升效率的AI工具集 - 轻松实现自动化
  • ValueError: pic should not have > 4 channels. Got XXX channels.
  • navicat无法连接远程mysql数据库1130报错的解决方法