国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

基于linux操作系統(tǒng)下s5pv210板子的按鍵中斷實(shí)驗(yàn)

發(fā)布者:智慧啟迪最新更新時(shí)間:2024-12-17 來(lái)源: cnblogs關(guān)鍵字:linux操作系統(tǒng)  按鍵中斷 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章


首先,在做這個(gè)實(shí)驗(yàn)之前有三件事是要明確的:


1. linux下的中斷實(shí)驗(yàn)不需要像裸機(jī)實(shí)驗(yàn)一樣要自己寫(xiě)取消屏蔽,清除中斷標(biāo)志位的操作,系統(tǒng)會(huì)自動(dòng)幫你完成;


2.中斷號(hào)的申請(qǐng)我使用的是gpio_to_irq()這個(gè)宏,它會(huì)幫我們自動(dòng)分配中斷號(hào),返回值為中斷號(hào);


3. 在每個(gè)板子配套來(lái)的內(nèi)核代碼大部分都是已經(jīng)包含了按鍵中斷驅(qū)動(dòng),如果想另自己寫(xiě)的按鍵中斷驅(qū)動(dòng)不與內(nèi)核本身帶的發(fā)生中斷號(hào)上的沖突,應(yīng)先找到內(nèi)核代碼下的arch/arm/mach-s5pv210/mach-mini210.c中的gpio_bottons中的對(duì)按鍵初始化的代碼注釋掉(其他板子也類似),如下代碼所示:


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. 檢測(cè)是否發(fā)生了按鍵中斷

16     

17     

18     //2. 清除已經(jīng)發(fā)生的按鍵中斷

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代表動(dòng)態(tài)分配次設(shè)備號(hào),即由系統(tǒng)自動(dòng)分配*/

51     .minor = MISC_DYNAMIC_MINOR,

52     .name = 'key_miscdev',

53     .fops = &key_fops,

54 };

55 

56 static int key_init()

57 {

58     /*注冊(cè)混雜設(shè)備*/

59     misc_register(&key_miscdevice);

60     

61     /*申請(qǐng)中斷,如果內(nèi)核中已有按鍵中斷驅(qū)動(dòng),則需要把a(bǔ)rch/arm/mach-s5pv210/mach-mini210.c文件的gpio_buttons定義的相關(guān)按鍵去掉,

62      不然板子上的按鍵中斷就已經(jīng)被占用,不能注冊(cè)中斷*/

63     /*注意:中斷號(hào)這個(gè)參數(shù)應(yīng)該用gpio_to_irq(S5PV210_GPH2(0)),假如用了IRQ_EINT16_31則按鍵驅(qū)動(dòng)不會(huì)工作*/

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     /*注銷設(shè)備*/

76     misc_deregister(&key_miscdevice);

77 }

78 

79 MODULE_LICENSE('GPL');

80 

81 module_init(key_init);

82 module_exit(key_exit);


關(guān)鍵字:linux操作系統(tǒng)  按鍵中斷 引用地址:基于linux操作系統(tǒng)下s5pv210板子的按鍵中斷實(shí)驗(yàn)

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

推薦閱讀最新更新時(shí)間:2025-06-25 01:21

Linux將成為21世紀(jì)汽車主流操作系統(tǒng)
據(jù)科技博客ZDNet報(bào)道,開(kāi)源軟件組織Linux基金會(huì)表示,Linux操作系統(tǒng)將成為21世紀(jì)汽車產(chǎn)品的主流操作系統(tǒng)。 ? Linux將成為21世紀(jì)汽車主流操作系統(tǒng) Linux系統(tǒng)不僅支持電腦服務(wù)器產(chǎn)品,還能通過(guò)Android運(yùn)行在用戶的智能手機(jī)上;此外,在汽車上也能找到它的蹤影。當(dāng)然,沒(méi)有人在購(gòu)買(mǎi)汽車產(chǎn)品時(shí)考慮它使用了何種操作系統(tǒng),但是包括豐田、尼桑、捷豹路虎、福特、馬自達(dá)、三菱和斯巴魯?shù)戎髁髌嚻放圃趦?nèi),它們的車載信息娛樂(lè)、顯示、車載4G網(wǎng)絡(luò)、Wi-Fi系統(tǒng),都離不開(kāi)Linux操作系統(tǒng)的支持。 各大軟件廠商也都紛紛加入了面向汽車行業(yè)的這場(chǎng)移動(dòng)物聯(lián)網(wǎng)盛宴當(dāng)中。Movimento、甲骨文、高通、德儀、UIEvolu
[嵌入式]
基于嵌入式Linux操作系統(tǒng)的可視化安全倒車系統(tǒng)
   引言   電子信息與數(shù)字圖像處理技術(shù)目前已被廣泛地應(yīng)用在各個(gè)領(lǐng)域,車載系統(tǒng)的信息化已成為現(xiàn)代汽車業(yè)的重要標(biāo)志?,F(xiàn)在的倒車?yán)走_(dá)系統(tǒng)可以為駕駛者提供許多幫助,多數(shù)采用超聲波測(cè)距技術(shù),可以直接顯示出車尾與障礙物之間的距離。但由于超聲波的散射特性,如果地面有尖銳的突起或存在橫在半空的棱角狀物體,系統(tǒng)就不能有效地“察覺(jué)”。假如能為現(xiàn)有的倒車系統(tǒng)增加一個(gè)可視功能,那么駕駛員在倒車時(shí)不必回頭就可清楚車后的情況。本文設(shè)計(jì)了一種可視化安全倒車系統(tǒng),該系統(tǒng)采用嵌入式Linux操作系統(tǒng)內(nèi)核驅(qū)動(dòng) USB攝像頭實(shí)現(xiàn)車后狀況實(shí)時(shí)監(jiān)控,通過(guò)判斷超聲波測(cè)距是否達(dá)到閾值來(lái)啟動(dòng)語(yǔ)音報(bào)警功能。    1 系統(tǒng)方案設(shè)計(jì)   如圖1所示,系統(tǒng)由主控模塊、
[嵌入式]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved