娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

基于linux操作系統下s5pv210板子的按鍵中斷實驗

發布者:智慧啟迪最新更新時間:2024-12-17 來源: cnblogs關鍵字:linux操作系統  按鍵中斷 手機看文章 掃描二維碼
隨時隨地手機看文章


首先,在做這個實驗之前有三件事是要明確的:


1. linux下的中斷實驗不需要像裸機實驗一樣要自己寫取消屏蔽,清除中斷標志位的操作,系統會自動幫你完成;


2.中斷號的申請我使用的是gpio_to_irq()這個宏,它會幫我們自動分配中斷號,返回值為中斷號;


3. 在每個板子配套來的內核代碼大部分都是已經包含了按鍵中斷驅動,如果想另自己寫的按鍵中斷驅動不與內核本身帶的發生中斷號上的沖突,應先找到內核代碼下的arch/arm/mach-s5pv210/mach-mini210.c中的gpio_bottons中的對按鍵初始化的代碼注釋掉(其他板子也類似),如下代碼所示:


static struct gpio_keys_button gpio_buttons[] = {

    /*{

        .gpio        = S5PV210_GPH2(0),

        .code        = 158,

        .desc        = 'BACK',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH2(1),

        .code        = 102,

        .desc        = 'HOME',

        .active_low    = 1,

        .wakeup        = 1,

    }, {

        .gpio        = S5PV210_GPH2(2),

        .code        = 139,

        .desc        = 'MENU',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH2(3),

        .code        = 232,

        .desc        = 'DPAD_CENTER',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH3(0),

        .code        = 105,

        .desc        = 'DPAD_LEFT',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH3(1),

        .code        = 108,

        .desc        = 'DPAD_DOWN',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH3(2),

        .code        = 103,

        .desc        = 'DPAD_UP',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH3(3),

        .code        = 106,

        .desc        = 'DPAD_RIGHT',

        .active_low    = 1,

        .wakeup        = 0,

    }, {

        .gpio        = S5PV210_GPH1(7),

        .code        = 102,

        .desc        = 'HOME',

        .active_low    = 1,

        .wakeup        = 1,

    }*/

};


下面給出完整代碼:


 1 #include

 2 #include

 3 #include

 4 #include

 5 #include

 6 #include

 7 #include   

 8 #include   

 9 #include

10 

11 #define GPH2CON 0xe0200c40

12 

13 irqreturn_t key_irq(int irq, void * dev_id)

14 {

15     //1. 檢測是否發生了按鍵中斷

16     

17     

18     //2. 清除已經發生的按鍵中斷

19     

20     

21     //3. 打印按鍵值

22     printk('key down!n');

23     

24     return 0;

25 }

26 

27 int key_open (struct inode *inode, struct file *filp)

28 {

29     return 0;

30 }

31 

32 void key_hw_init()

33 {

34     //unsigned int data; 

35     unsigned int *gpio_config;

36     

37     gpio_config = ioremap(GPH2CON,4);

38     //data = readl(gpio_config);

39     //data &= ~0b1111;

40     //data |= 0b1111;

41     writel(0x0000000f,gpio_config);

42 }

43 

44 struct file_operations key_fops =

45 {

46         .open = key_open,

47 };

48 struct miscdevice key_miscdevice =

49 {       

50     /*MISC_DYNAMIC_MINOR代表動態分配次設備號,即由系統自動分配*/

51     .minor = MISC_DYNAMIC_MINOR,

52     .name = 'key_miscdev',

53     .fops = &key_fops,

54 };

55 

56 static int key_init()

57 {

58     /*注冊混雜設備*/

59     misc_register(&key_miscdevice);

60     

61     /*申請中斷,如果內核中已有按鍵中斷驅動,則需要把arch/arm/mach-s5pv210/mach-mini210.c文件的gpio_buttons定義的相關按鍵去掉,

62      不然板子上的按鍵中斷就已經被占用,不能注冊中斷*/

63     /*注意:中斷號這個參數應該用gpio_to_irq(S5PV210_GPH2(0)),假如用了IRQ_EINT16_31則按鍵驅動不會工作*/

64     request_irq(gpio_to_irq(S5PV210_GPH2(0)), key_irq, IRQF_TRIGGER_FALLING, 'key_miscdev', 0);

65     request_irq(gpio_to_irq(S5PV210_GPH2(1)), key_irq, IRQF_TRIGGER_FALLING, 'key_miscdev', 0);

66     request_irq(gpio_to_irq(S5PV210_GPH2(2)), key_irq, IRQF_TRIGGER_FALLING, 'key_miscdev', 0);

67     request_irq(gpio_to_irq(S5PV210_GPH2(3)), key_irq, IRQF_TRIGGER_FALLING, 'key_miscdev', 0);

68 

69     return 0;

70         

71 }

72 

73 static void key_exit()

74 {

75     /*注銷設備*/

76     misc_deregister(&key_miscdevice);

77 }

78 

79 MODULE_LICENSE('GPL');

80 

81 module_init(key_init);

82 module_exit(key_exit);


關鍵字:linux操作系統  按鍵中斷 引用地址:基于linux操作系統下s5pv210板子的按鍵中斷實驗

上一篇:基于s5pv210外部中斷使用指南
下一篇:ARM的MMU功能分析

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 孝昌县| 彰化县| 革吉县| 黄大仙区| 苍梧县| 多伦县| 拜城县| 林口县| 昌都县| 松阳县| 勐海县| 新宾| 武乡县| 武义县| 汤阴县| 铜梁县| 黎平县| 海晏县| 陇西县| 唐海县| 山阴县| 台湾省| 楚雄市| 兴宁市| 雅安市| 碌曲县| 宁明县| 南宁市| 襄樊市| 阳新县| 修水县| 灵宝市| 青岛市| 莱州市| 虹口区| 和龙市| 叙永县| 安康市| 西畴县| 临高县| 深泽县|