当前位置:首页 > 嵌入式培训 > Linux学习 > linux入门 > 嵌入式linux下GPIO驱动程序操作方法(还有实例)

嵌入式linux下GPIO驱动程序操作方法(还有实例) 时间:2018-08-10      来源:未知

嵌入式linux下GPIO驱动程序,这是在嵌入式设备中最基本的操作,也是菜鸟进阶必经之路,,今天我们就用各个实例来让你深刻的了解GPIO驱动程序,这都是我自己亲手做过的,可以慢慢来理解。

首先我们在看驱动程序的代码之前,先要知道库函数:

内核GPIO库函数:

int gpio_request(unsigned gpio,const char *label)//申请GPIO资源

参数gpio表示GPIO所对应的编号,由于在平台代码中,已经将CPU所有的GPIO进行统一的规划和编号

参数*label表示标签

因为gpio在内核中,就和内存一样,所以你需要的就是申请

当返回的值小于0的话,那么就表示失败,如果大于0那就表示功能

gpio_direction_output(unsigned gpio,int value)//配置GPIO为输出口,并输出value(0,1)

gpio_direction_input(unsigned gpio)//配置为输入口

gpio_set_value(unsigned gpio,int value);

//将GPIO寄存器设置为0或1,该函数并不设置GPIO为输出,只是把相应的寄存器设置为0

gpio_get_value(unsigned gpio);//同理,设置为输入

gpio_free(unsigned gpio);//释放GPIO资源

以上函数返回值表示GPIO的状态

上面这些就是GPIO驱动程序的基本概念理解,你必须要了解,才能进行接下来的操作,接下来就是GPIO驱动程序的操作,我们就来通过一个蜂鸣器的例子,来让你对GPIO驱动程序的操作有深刻理解,蜂鸣器的例子是这样的:要求驱动加载的时候,打开蜂鸣器,卸载驱动时,关闭蜂鸣器,下面就来解答。

#include

#include

#include

#include

#define LED_ON 1//宏定义一下,为了美观

#define LED_OFF 0

//定义硬件GPIO结构体

struct led_resource{

unsigned long gpio;//gpio的编号,每个GPIO都有一个内核分配的唯一编号

char *name; //gpio的标签

};

static struct led_resource led_info[]={

[0] = {

.gpio = S5PV210_GPD0(0),//管脚信息

.name = "GPC0_0"//管脚名称

},

};

static void led_control(unsigned long gpio,int flags)

{

gpio_direction_output(gpio,0);//这句表示先把当前GPIO口设置为输出口,并且输出0

gpio_set_value(gpio,flags);//然后在输出想要设置的电平,前面先设置0是为了防止干扰

}

static int led_init(void)

{

gpio_request(led_inf0[0].gpio,led_inf[0].name);//申请GPIO资源

led_control(led_inf0[i].gpio,LED_ON);//调用函数来设置输出口为1

return 0;

}

static void led_exit(void)

{

led_control(led_inf0[0].gpio,LED_OFF);//调用函数输出0关闭蜂鸣器

gpio_free(led_inf0[0].gpio);//释放GPIO资源

}

module_init(led_init);//注册入口函数

module_exit(led_exit);//注册出口函数

MODULE_LICENSE("GPL V2");//声明该程序符合国际GPL委员会制定的标准

切记:在加载的时候,内核会有调用入口函数,他就会执行入口函数的命令,灯就会亮,蜂鸣器就会叫,一但卸载驱动程序的时候,内核就会自动调用出口函数,当然也会执行出口函数的内容。写好程序后,把代码写成.C文件然后放在linux内核源代码字符设备驱动所在的文件夹下,然后用当前目录的makefile编译一下,然后把编译好的驱动程序通过tftp或其他方式传到开发板的文件系统的任意一个文件夹。然后用命令加载这个驱动程序或者卸载

这样你就看到现象了,是不是不是那么难,不管是什么样的例子,你只要掌握GPIO驱动程序操作方法,那你就都可以迎刃而解了,想要了解更多GPIO驱动程序操作方法,你可以参考Linux内核驱动之gpio子系统的使用

上一篇:嵌入式linux项目实例,嵌入式学霸总结

下一篇:Linux查看进程命令有哪些

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部