⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpio.c

📁 此程序是在linux操作系统下的GPIO驱动
💻 C
字号:
/* gpio.c *东南大学嵌入式工程中心 **/#include <linux/init.h>#include <linux/module.h>#include <linux/interrupt.h>#include <linux/ioport.h>#include <linux/platform_device.h>#include <linux/delay.h>#include <asm/hardware.h>#include <asm/irq.h>#include <asm/io.h>#include <asm/delay.h>#include <asm/mach/arch.h>#include <asm/mach/map.h>#define W90X900_GPIOE_DIR   (W90X900_VA_GPIO + 0x44)#define W90X900_GPIOE_DOUT  (W90X900_VA_GPIO + 0x48)#define W90X900_GPIOE_DIN   (W90X900_VA_GPIO + 0x4C)#define W90X900_MFSEL       (W90X900_VA_GCR + 0x0C)static struct platform_device *sys_gpio;static ssize_t write_gpio(struct device *dev, struct device_attribute *attr, const char *buffer, size_t count){      if(buffer[0] == '0') { 	outl(inl(W90X900_GPIOE_DOUT) & ~0x40, W90X900_GPIOE_DOUT);    } else if(buffer[0] == '1') {        outl(inl(W90X900_GPIOE_DOUT) | 0x40, W90X900_GPIOE_DOUT);    }     return count;}static ssize_t read_gpio(struct device *dev, struct device_attribute *attr, char *buf){    unsigned int i;    i = inl(W90X900_GPIOE_DIN) & 0x80;    i >>= 7;    return sprintf(buf, "%01x\n", i);}    /* Attach the sysfs write method */DEVICE_ATTR(gpio, 0644, read_gpio, write_gpio);/* Attribute Descriptor */static struct attribute *gpio_attrs[] = {  &dev_attr_gpio.attr,  NULL};/* Attribute group */static struct attribute_group gpio_attr_group = {  .attrs = gpio_attrs,};static int __init w90x900_gpio_demo(void){    /* Register a platform device */    printk("register gpio device\n");      // Set GPIOE6 as output, GPIOE7 as input    outl(inl(W90X900_MFSEL) & ~0x400,W90X900_MFSEL);    outl(inl(W90X900_GPIOE_DIR) & ~0x80,W90X900_GPIOE_DIR);    outl(inl(W90X900_GPIOE_DIR) | 0x40,W90X900_GPIOE_DIR);    sys_gpio = platform_device_register_simple("w90x900-gpio", -1, NULL, 0);        if(sys_gpio == NULL)    printk("register failed\n");    sysfs_create_group(&sys_gpio->dev.kobj, &gpio_attr_group);        return(0); }    module_init(w90x900_gpio_demo);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -