驱动:基于GPIO子系统实现led灯驱动的编写,应用层控制三个灯的亮灭

通过ioctl实现LED三盏灯点亮

驱动代码

#include <linux/module.h>
#include <linux/fs.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#include <linux/device.h>
#include <linux/poll.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/timer.h>
#define LED_ON _IOW('l',1,int)//开灯
#define LED_OFF _IOW('l',0,int)//关灯
//定时器对象结构体
/*struct timer_list {
    
    struct hlist_node   entry;//构成链表
    unsigned long       expires;//设置定时时间的变量  jiffies+CONFIG_HZ(定时1s)
    void            (*function)(struct timer_list *);//定时器处理函数的函数指针
    u32         flags;//0缺省  新版才有的
    };*/
/*leds{
        core-leds{
            led1=<&gpioz 5 0>;
            led2=<&gpioz 6 0>;
            led3=<&gpioz 7 0>;
        };
        extend-leds{
            led1=<&gpioe 10 0>;
            led2=<&gpiof 10 0>;
            led3=<&gpioe 8 0>;
        };
    };  */
int major;
int i;
struct class *cls;
struct device *dev;
char kbuf[128] = { 0 };
struct timer_list mytimer;
struct device_node *node;
struct device_node *node1;
struct gpio_desc *gpiono0;
struct gpio_desc *gpiono1;
struct gpio_desc *gpiono2;
struct gpio_desc *gpiono10;
struct gpio_desc *gpiono11;
struct gpio_desc *gpiono12;
//定时器的调用
void mytimer_function(struct timer_list *timer)
{
	//让灯的状态取反
	//gpio_set_value(gpiono,!gpiod_get_value(gpiono));
	//再次启用定时器
	//mod_timer(timer,jiffies+HZ);
}
//设备数的节点解析,注册gpio,定时
int  deviter_init(v
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值