linux内核中都有s3c2410_gpio_cfgpin,linux内核gpio操作函数解析.doc

本文详细介绍了S3C2410处理器中GPIO驱动的相关API函数,包括配置引脚功能、获取配置状态、设置拉电阻、读写引脚电平及中断处理等。通过实例展示了如何使用这些函数来操作GPIO,同时提到了相关的头文件和寄存器定义。对于理解嵌入式系统的GPIO操作具有指导意义。
摘要由CSDN通过智能技术生成

详解内核驱动操作GPIO引脚API函数

函数原型:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);unsigned int s3c2410_gpio_getcfg(unsigned int pin);void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);unsigned int s3c2410_gpio_getpin(unsigned int pin);unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change);int s3c2410_gpio_getirq(unsigned int pin);关于函数中用到的虚拟地址到物理地址转换的变量及算法可以参考/hefeng330467115@126/blog/static/782058422010620511659/或/u3/102836/showart_2065945.html看简单led驱动程序是用到的文件及头文件可能有:linux/include/asm-arm/arch-s3c2410/map.hlinux/include/asm-arm/arch-s3c2410/regs-gpio.hlinux/arch/arm/plat-s3c24xx/gpio.clinux/include/asm-arm/io.h用Source Insight 打开这些文件,然后再看驱动程序,可以随意跳转到定义处,很是方便pin参数:gpio引脚及特殊功能寄存器助记符都在linux/include/asm-arm/arch-s3c2410/regs-gpio.h中定义:eg:S3C2410_GPACON S3C2410_GPADATS3C2410_GPA0 - S3C2410_GPA22 //引脚S3C2410_GPA0_OUT - S3C2410_GPA22_OUT //设置引脚为输出用到哪个不清楚的可以直接到这个文件去查找还有中断和GSTATUS:S3C2410_EXTINT0 -> irq sense control for EINT0..EINT7S3C2410_EXTINT1 -> irq sense control for EINT8..EINT15S3C2410_EXTINT2 -> irq sense control for EINT16..EINT23……function参数:指定引脚功能:输出、输入还是特殊功能,也在linux/include/asm-arm/arch-s3c2410/regs-gpio.h中定义。函数功能:1 原型:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);作用:配置GPIO引脚功能,即是配置相应的CON位eg: s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_OUTP);//设置B5脚为输出功能函数原代码及注释:(这个函数注释的比较详细,后面类似的不再重复注释)void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){void __iomem *base = S3C24XX_GPIO_BASE(pin); //取引脚基地址即是:GPA0、GPB0 …… 的虚拟基地址unsigned long mask; unsigned long con;unsigned long flags;if (pin < S3C2410_GPIO_BANKB) {mask = 1 << S3C2410_GPIO_OFFSET(pin);//用于查找对应的引脚位(端口A一位控制一个引脚)} else {mask = 3 << S3C2410_GPIO_OFFSET(pin)*2;//除端口A外其他端口都是两位控制一个引脚}//根据function值具体确定怎么来调整functionswitch (function) { case S3C2410_GPIO_LEAVE:mask = 0;function = 0;break;case S3C2410_GPIO_INPUT:case S3C2410_GPIO_OU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值