歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Mini6410 實現簡單按鍵中斷驅動

Mini6410 實現簡單按鍵中斷驅動

日期:2017/3/1 10:56:23   编辑:Linux編程

簡單按鍵中斷驅動,在mini6410開發板上運行良好。

僅供技術交流,請勿商用

  1. #include <linux/fs.h>
  2. #include <linux/init.h>
  3. #include <linux/module.h>
  4. #include <linux/kernel.h>
  5. #include <linux/irq.h>
  6. #include <asm/irq.h>
  7. #include <asm/io.h>
  8. #include <linux/interrupt.h>
  9. #include <linux/miscdevice.h>
  10. #include <linux/cdev.h>
  11. #include <asm/uaccess.h>
  12. #include <mach/hardware.h>
  13. #include <linux/platform_device.h>
  14. #include <mach/regs-gpio.h>
  15. #include <mach/gpio-bank-n.h>
  16. #include <plat/gpio-cfg.h>
  17. #define DEVICE_NAME "button_irq"
  18. static int button_irq_open(struct inode *inode,struct file *filp)
  19. {
  20. return 0;
  21. }
  22. static int button_irq_release(struct inode *inode,struct file *filp)
  23. {
  24. return 0;
  25. }
  26. static irqreturn_t button_irq_inter(int nr,void *devid)
  27. {
  28. static int count=0;
  29. count ++;
  30. printk("%d\n",count);
  31. return IRQ_RETVAL(IRQ_HANDLED);
  32. }
  33. static int button_irq_init()
  34. {
  35. unsigned int ret;
  36. ret = request_irq(IRQ_EINT(0),button_irq_inter,IRQ_TYPE_EDGE_BOTH,"KEY0",NULL);
  37. return 0;
  38. }
  39. static struct file_operations dev_fops =
  40. {
  41. .owner = THIS_MODULE,
  42. .open = button_irq_open,
  43. .release = button_irq_release,
  44. };
  45. static struct miscdevice misc =
  46. {
  47. .minor = MISC_DYNAMIC_MINOR,
  48. .name = DEVICE_NAME,
  49. .fops = &dev_fops,
  50. };
  51. static int __init dev_init()
  52. {
  53. int ret;
  54. ret = misc_register(&misc);
  55. printk("button_irq errno\n");
  56. button_irq_init();
  57. return 0;
  58. }
  59. static void __exit dev_exit()
  60. {
  61. misc_deregister(&misc);
  62. free_irq(IRQ_EINT(0),NULL);
  63. }
  64. module_init(dev_init);
  65. module_exit(dev_exit);
  66. MODULE_LICENSE("GPL");
  67. MODULE_AUTHOR("MUGE0913");
Copyright © Linux教程網 All Rights Reserved