驱动程序
#include <linux/init.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/timer.h>
/*
//添加自定义led灯的设备树结点
myleds{
myled1=<&gpioe 10 0>; //应用gpioe控制器节点 0表示默认
myled2=<&gpioe 8 0>;
myled3=<&gpiof 10 0>;
};
*/
struct gpio_desc *gpiono;
struct gpio_desc *gpiono2;
struct gpio_desc *gpiono3;
struct device_node *dnode;
//定义定时器结构体对象
struct timer_list mytimer;
//定义定时器回调函数
void mytimer_function(struct timer_list* timer)
{
//让gpio管脚输出与上一次相反的电平
gpiod_set_value(gpiono,!gpiod_get_value(gpiono));
gpiod_set_value(gpiono2,!gpiod_get_value(gpiono2));
gpiod_set_value(gpiono3,!gpiod_get_value(gpiono3));
//再次起用定时器
mod_timer(timer,jiffies+HZ);
}
static int __init mycdev_init(void)
{
//初始化定时器结构体成员
mytimer.expires=jiffies+HZ; //定时1秒
timer_setup(&mytimer,mytimer_function,0);
//注册并启用定时器