SMDKC110的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制GPIO并不像控制传统的单片机那样。
这里我将提及一种方法来讲述,这种方法也是我至今看到最简单的方法
首先我们打开linux-3.0.1\arch\arm\plat-samsung\include\plat下gpio-cfg.h这个头文件,仔细浏览后发现,我们可以使用的函数:
1.设置单一io口
int s3c_gpio_cfgpin(unsigned int pin, unsigned int to);
里面有两个参数,第一个pin是选择哪个引脚,第二个参数有三种定义
设置成输出模式 #define S3C_GPIO_INPUT (S3C_GPIO_SPECIAL(0))
设置成输入模式 #define S3C_GPIO_OUTPUT (S3C_GPIO_SPECIAL(1))
复用功能选择 #define S3C_GPIO_SFN(x) (S3C_GPIO_SPECIAL(x))
其实根据我使用的情况来说第1,2两个定义根本就是鸡肋,只有第3个S3C_GPIO_SFN(x)才是最有用的,举个例子:
Ok6410的开发板的DS18B20的接口,器件被接在GPE0上,而GPE有如下复用功能
其中的参数x就是对应上表的复用功