Mini6410 达成简单按键中断驱动
发布时间:2021-12-18 16:27:56 所属栏目:PHP教程 来源:互联网
导读:简单按键中断驱动,在mini6410开发板上运行良好。 仅供技术交流,请勿商用 #include linux/fs.h #include linux/init.h #include linux/module.h #include linux/kernel.h #include linux/irq.h #include asm/irq.h #include asm/io.h #include linux/interru
简单按键中断驱动,在mini6410开发板上运行良好。 仅供技术交流,请勿商用 #include <linux/fs.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/irq.h> #include <asm/irq.h> #include <asm/io.h> #include <linux/interrupt.h> #include <linux/miscdevice.h> #include <linux/cdev.h> #include <asm/uaccess.h> #include <mach/hardware.h> #include <linux/platform_device.h> #include <mach/regs-gpio.h> #include <mach/gpio-bank-n.h> #include <plat/gpio-cfg.h> #define DEVICE_NAME "button_irq" static int button_irq_open(struct inode *inode,struct file *filp) { return 0; } static int button_irq_release(struct inode *inode,struct file *filp) { return 0; } static irqreturn_t button_irq_inter(int nr,void *devid) { static int count=0; count ++; printk("%dn",count); return IRQ_RETVAL(IRQ_HANDLED); } static int button_irq_init() { unsigned int ret; ret = request_irq(IRQ_EINT(0),button_irq_inter,IRQ_TYPE_EDGE_BOTH,"KEY0",NULL); return 0; } static struct file_operations dev_fops = { .owner = THIS_MODULE, .open = button_irq_open, .release = button_irq_release, }; static struct miscdevice misc = { .minor = MISC_DYNAMIC_MINOR, .name = DEVICE_NAME, .fops = &dev_fops, }; static int __init dev_init() { int ret; ret = misc_register(&misc); printk("button_irq errnon"); button_irq_init(); return 0; } static void __exit dev_exit() { misc_deregister(&misc); free_irq(IRQ_EINT(0),NULL); } module_init(dev_init); module_exit(dev_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("MUGE0913"); ![]() (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |