微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM Linux下访问GPIO端口

ARM Linux下访问GPIO端口

时间:11-22 来源:互联网 点击:

/arm/plat-s3c24xx/gpio.c

s3c2410_gpio_cfgpin //配置端口的GPIO的功能
s3c2410_gpio_getcfg//读取功能配置
s3c2410_gpio_pullup//配置上拉电阻
s3c2410_modify_misccr //杂项配置

s3c2410_gpio_getirq//给定端口,转换出IRQ号
s3c2410_gpio_irqfilter//配置IRQ过滤使能与否

s3c2410_gpio_setpin//写数据到端口
s3c2410_gpio_getpin//从端口读数据

以下代码摘自Leds的驱动程序,旨在说明linux下如何访问寄存器

static unsigned long led_table [] =

{

S3C2410_GPB5,

S3C2410_GPB6,

S3C2410_GPB7,

S3C2410_GPB8,

};

/* 用来指定GPIO引脚的功能:输出 */

static unsigned int led_cfg_table [] =

{

S3C2410_GPB5_OUTP,

S3C2410_GPB6_OUTP,

S3C2410_GPB7_OUTP,

S3C2410_GPB8_OUTP,

};

static int gt2440_leds_ioctl(

structinode *inode,

structfile *file,

unsignedint cmd,

unsignedlong arg)

{

if(arg > 4)

{

return-EINVAL;

}

switch(cmd)

{

caseIOCTL_LED_ON:

//设置指定引脚的输出电平为0

s3c2410_gpio_setpin(led_table[arg], 0);

return0;

caseIOCTL_LED_OFF:

//设置指定引脚的输出电平为1

s3c2410_gpio_setpin(led_table[arg], 1);

return0;

default:

return-EINVAL;

}

}

static struct file_operations dev_fops = {

.owner = THIS_MODULE,

.ioctl = gt2440_leds_ioctl,

};

static struct miscdevice misc = {

.minor= MISC_DYNAMIC_MINOR,

.name= DEVICE_NAME,

.fops= &dev_fops,

};

static int __init dev_init(void)

{

intret;

inti;

for(i = 0; i < 4; i++)

{

s3c2410_gpio_cfgpin(led_table[i],led_cfg_table[i]);

s3c2410_gpio_setpin(led_table[i],0);// 设置相应GPIO口的值

}

ret= misc_register(&misc);

printk(DEVICE_NAME" initialized\n");

returnret;

}

static void __exit dev_exit(void)

{

misc_deregister(&misc);

}

module_init(dev_init);

module_exit(dev_exit); *******************************************************************************

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top