GPIO IO操作函数




#include <linux/gpio.h> //里面声明io口的操作函数

int gpio_request(unsigned gpio, const char *label);//每个io只能被请求一次,可防止多个驱动来控制同一个IO口
void gpio_free(unsigned gpio); //释放已请求的io口

int gpio_direction_input(unsigned gpio); //把指定的IO口作输入功能, gpio用于指定具体哪个io口
int gpio_direction_output(unsigned gpio, int value); //作输出功能,并根据value的值输出高低电平

int gpio_get_value(unsigned gpio); //获取指定IO口的电平
void gpio_set_value(unsigned gpio, int value); //设置IO口的电平为value(0/1)

int gpio_to_irq(unsigned gpio);  //根据io口,获取到它对应的中断号(io口大都有外部中断功能)






在内核里用什么具体值来表示一个io口? 这是由芯片厂家来定义的.
一般情况下, io口的定义是在内核源码arch/arm/mach-xxxx/include/mach/gpio.h.
我们的板的io口定义是在: arch/arm/mach-sunxi/include/mach/gpio.h

49 /* sunxi gpio name space */
 50 #define GPIOA(n)    (SUNXI_PA_BASE + (n))    //PA, n表示这组里的第几个IO口
 51 #define GPIOB(n)    (SUNXI_PB_BASE + (n))    
 52 #define GPIOC(n)    (SUNXI_PC_BASE + (n))
 53 #define GPIOD(n)    (SUNXI_PD_BASE + (n))
 54 #define GPIOE(n)    (SUNXI_PE_BASE + (n))
 55 #define GPIOF(n)    (SUNXI_PF_BASE + (n))
 56 #define GPIOG(n)    (SUNXI_PG_BASE + (n))
 57 #define GPIOH(n)    (SUNXI_PH_BASE + (n))
 58 #define GPIOI(n)    (SUNXI_PI_BASE + (n))
 59 #define GPIOJ(n)    (SUNXI_PJ_BASE + (n))
 60 #define GPIOK(n)    (SUNXI_PK_BASE + (n))
 61 #define GPIOL(n)    (SUNXI_PL_BASE + (n))
 62 #define GPIOM(n)    (SUNXI_PM_BASE + (n))
 63 #define GPION(n)    (SUNXI_PN_BASE + (n))
 64 #define GPIOO(n)    (SUNXI_PO_BASE + (n))
 65 #define GPIO_AXP(n) (AXP_PIN_BASE  + (n))



猜你喜欢

转载自blog.csdn.net/ren1204/article/details/80724768
今日推荐