6410 gpio控制及接口

本文详细解析了S3C64XX平台下GPIO配置的具体操作,包括输出模式设置、上拉电阻配置及扫描码初始化过程。通过具体的代码示例,展示了如何使用s3c_gpio_cfgpin和s3c_gpio_setpull函数来配置引脚,并介绍了S3C_GPIO_OUTPUT、S3C_GPIO_INPUT等常量的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

updating

       unsigned tmp;
      //gpe1 pull up,置位3:2=10b,其余不变
tmp = readl(S3C64XX_GPEPUD);
tmp &= ~(2<<2);
tmp |= 2<<2;
writel(tmp,S3C64XX_GPEPUD);


//gpe1 output mode,置位7:6:5:4=0001b,其余不变
tmp =readl(S3C64XX_GPECON);
tmp &= ~(F<<4);
tmp |= 1<<4;
writel(tmp,S3C64XX_GPECON);

//gpe1 output 0,置位1=0b,其余不变
tmp = __raw_readl(S3C64XX_GPEDAT);
tmp &=~(1<<1)
//

    if(line==0 ){
        uart_scancode_start(S3C64XX_GPA(3));
        printk("-----------uart_open(%d) called\n", line);

    }
    if(line==1){
        uart_scancode_start(S3C64XX_GPA(7));
        printk("-----------uart_open(%d) called\n", line);

    }

static void uart_scancode_init(unsigned long  pin)
{
/*
 s3c_gpio_cfgpin(S3C64XX_GPM(3), S3C_GPIO_OUTPUT);//out  mode
s3c_gpio_setpull(S3C64XX_GPM(3),S3C_GPIO_PULL_UP);//pull
*/
 s3c_gpio_cfgpin(pin, S3C_GPIO_OUTPUT);//out  mode
s3c_gpio_setpull(pin,S3C_GPIO_PULL_UP);//pull



}

static void uart_scancode_start(unsigned long pin)
{

    uart_scancode_init(pin);
    gpio_set_value(pin,0);
    //gpio_set_value(S3C64XX_GPM(3),1);

}

static void uart_scancode_stop(unsigned long  pin)
{
    gpio_set_value(pin,1);
    //gpio_set_value(S3C64XX_GPM(3),0);

}

其中需要说明的是
1.s3c_gpio_cfgpin(pin, S3C_GPIO_OUTPUT);//out  mode
第二个参数可选的值有
S3C_GPIO_OUTPUT
S3C_GPIO_INPUT
S3C_GPIO_SFN(x)
其定义分别是,在gpio-cfg.c
#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))

比如

欲配置GPL8为output模式
可以是 s3c_gpio_cfgpin(pin, S3C_GPIO_OUTPUT)
也可以是s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(1))

欲配置GPL8为中断模式
可以是s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(3))

2.s3c_gpio_setpull(pin,S3C_GPIO_PULL_UP)
第二个参数可选为
#define S3C_GPIO_PULL_NONE ((__force s3c_gpio_pull_t)0x00)
#define S3C_GPIO_PULL_DOWN ((__force s3c_gpio_pull_t)0x01)
#define S3C_GPIO_PULL_UP ((__force s3c_gpio_pull_t)0x02)
比如GPN的某个上拉位

转载于:https://www.cnblogs.com/-song/archive/2012/06/20/3331868.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值