2440的开发板如何使用GPIO
GPIO的寄存器定义是在哪个头文件呢?
没找错,是用下面这些API吧:
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
作用:配置GPIO引脚功能,即是配置相应的CON位
unsigned int s3c2410_gpio_getcfg(unsigned int pin);
作用:该函数根据引脚获得指定引脚配置的功能值
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
作用:设置相应GPIO口的上拉电阻
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
作用:该函数给指定的引脚位写入0或1,即是配置相应的DAT位。
void s3c2410_gpio_getpin(unsigned int pin);
作用:该函数读取指定引脚的状态 返回0或 1,即是读取相应的DAT位。项目可行性研究报告
那个参数pin,我在内核代码里找到一个regs-gpio.h,在linux-2.6.32.2\arch\arm\mach-s3c2410\include\mach里,里面定义的是GPIO口。
我写测试程序:
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/select.h> #include <sys/time.h> #include <errno.h> int main(void) { int i = 55; i = s3c2410_gpio_getcfg (S3C2410_GPA2); //不知道参数用得对不对。 printf("test-ok?---%d\n",i); }
编译出错
gpio_test.c:53: error: 'S3C2410_GPA2' undeclared (first use in this function)
gpio_test.c:53: error: (Each undeclared identifier is reported only once
gpio_test.c:53: error: for each function it appears in.)
make: *** [gpios] Error 1
假如我包含mach/regs-gpio.h的话,会提示找不到这个文件,是不是要把内核放在linux下的某个位置的?我的/usr/include下是没有gpio等头文件的。