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口。
我写测试程序:
- C/C++ code
#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等头文件的。
请问怎么用那些接口,如果要读某一个IO口怎么写怎么用呢?请举个例子,谢谢!~
------解决方案--------------------
仔细看下,要不就自己写个驱动。飘过
------解决方案--------------------
没有加头文件!#include <asm/arch-s3c2410/regs-gpio.h>
------解决方案--------------------
把头文件复制到工程目录中
------解决方案--------------------
给你参考一下,端口常用到的包含文件目录
#include <linux/configfs.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/tty.h>
#include <linux/slab.h>
#include <linux/delay.h>
#include <linux/fb.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/dma-mapping.h>
#include <linux/interrupt.h>
#include <linux/workqueue.h>
#include <linux/wait.h>
#include <linux/platform_device.h>
#include <linux/clk.h>
#include <linux/sched.h>
#include <linux/bounds.h>
#include <linux/gpio.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/leds.h>
#include <asm/div64.h>
#include <plat/gpio-cfg.h>
#include <plat/regs-gpio.h>
#include <plat/regs-timer.h>
#include <plat/s3c6410.h>
#include <plat/gpio-bank-p.h>
------解决方案--------------------
内核代码在 userspace 用?
揉揉眼,结果发现没看错