Linux中gpio接口的使用方法示例
前言
Linux内核中gpio是最简单,最常用的资源(和interrupt,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0~MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎么使用的
使用gpio
使用gpio接口需要包含#include
判断一个IO是否合法:
intgpio_is_valid(intnumber);
设置GPIO的方向,如果是输出同时设置电平:
/*setasinputoroutput,returning0ornegativeerrno*/ intgpio_direction_input(unsignedgpio); intgpio_direction_output(unsignedgpio,intvalue);
获取输入引脚的电平:
/*GPIOINPUT:returnzeroornonzero*/ intgpio_get_value(unsignedgpio); /*GPIOOUTPUT*/ voidgpio_set_value(unsignedgpio,intvalue); intgpio_cansleep(unsignedgpio); /*GPIOINPUT:returnzeroornonzero,mightsleep*/ intgpio_get_value_cansleep(unsignedgpio); /*GPIOOUTPUT,mightsleep*/ voidgpio_set_value_cansleep(unsignedgpio,intvalue);
获取一个GPIO并声明标签:
/*requestGPIO,returning0ornegativeerrno. *non-nulllabelsmaybeusefulfordiagnostics. */ intgpio_request(unsignedgpio,constchar*label); /*releasepreviously-claimedGPIO*/ voidgpio_free(unsignedgpio);
将GPIO映射为IRQ中断:
/*mapGPIOnumberstoIRQnumbers*/ intgpio_to_irq(unsignedgpio); /*mapIRQnumberstoGPIOnumbers(avoidusingthis)*/ intirq_to_gpio(unsignedirq);
设置GPIO的IRQ中断类型:
if(!sw->both_edges){ if(gpio_get_value(sw->gpio)){ set_irq_type(gpio_to_irq(sw->gpio),IRQ_TYPE_EDGE_FALLING); }else{ set_irq_type(gpio_to_irq(sw->gpio),IRQ_TYPE_EDGE_RISING); } }
参考文章
Linux中的gpio口使用方法
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。