【FL2416學習筆記】按鍵開發

來源:互聯網
上載者:User

標籤:

    先:

      

所以4個KEY的GPIO定義如下:

 1 #define GPF_KEY_4            8 2 #define GPF_KEY_4_INPUT     0x00 3 #define GPF_KEY_4_OUTPUT    0x01 4  5 #define GPF_KEY_3            6 6 #define GPF_KEY_3_INPUT     0x00 7 #define GPF_KEY_3_OUTPUT    0x01 8  9 #define GPF_KEY_2            410 #define GPF_KEY_2_INPUT     0x0011 #define GPF_KEY_2_OUTPUT    0x0112 13 #define GPF_KEY_0            014 #define GPF_KEY_0_INPUT     0x0015 #define GPF_KEY_0_OUTPUT    0x0116 17 18 #define KEY_PULL_DOWN    0x019 #define KEY_PULL_UP      0x120 21 22 #define GPFUP_KEY_0                    023 #define GPFUP_KEY_0_DISABLE            0x0024 #define GPFUP_KEY_0_PULL_DOWN_ENABLE   0x0125 #define GPFUP_KEY_0_PULL_UP_ENABLE     0x1026 27 #define GPFUP_KEY_2                    228 #define GPFUP_KEY_2_DISABLE            0x0029 #define GPFUP_KEY_2_PULL_DOWN_ENABLE   0x0130 #define GPFUP_KEY_2_PULL_UP_ENABLE     0x1031 32 #define GPFUP_KEY_3                    333 #define GPFUP_KEY_3_DISABLE            0x0034 #define GPFUP_KEY_3_PULL_DOWN_ENABLE   0x0135 #define GPFUP_KEY_3_PULL_UP_ENABLE     0x1036 37 #define GPFUP_KEY_4                    438 #define GPFUP_KEY_4_DISABLE            0x0039 #define GPFUP_KEY_4_PULL_DOWN_ENABLE   0x0140 #define GPFUP_KEY_4_PULL_UP_ENABLE     0x1041 42 /*43 GPFDAT 儲存當前按鍵的狀態44 */45 #define GPFDAT_KEY_0             046 #define GPFDAT_KEY_2             247 #define GPFDAT_KEY_3             348 #define GPFDAT_KEY_4             4

    寄存器的定義如下:

1 #define GPFCON (*(volatile unsigned *)0x56000050) 2 #define GPFDAT (*(volatile unsigned *)0x56000054) 3 #define GPFUP  (*(volatile unsigned *)0x56000058)

    主程式中,需要先將GPF0,GPF2,GPF3,GPF4設定為輸入:

1     GPFCON = (GPF_KEY_0_INPUT << GPF_KEY_0) | (GPF_KEY_2_INPUT << GPF_KEY_2) 2             |(GPF_KEY_3_INPUT << GPF_KEY_3) | (GPF_KEY_4_INPUT << GPF_KEY_4) ;

同時按鍵功能使能:

1     GPFUP = ((GPFUP_KEY_0_PULL_DOWN_ENABLE | GPFUP_KEY_0_PULL_UP_ENABLE) << GPFUP_KEY_0) 2            | ((GPFUP_KEY_2_PULL_DOWN_ENABLE | GPFUP_KEY_2_PULL_UP_ENABLE) << GPFUP_KEY_2) 3            | ((GPFUP_KEY_3_PULL_DOWN_ENABLE | GPFUP_KEY_3_PULL_UP_ENABLE) << GPFUP_KEY_3) 4            | ((GPFUP_KEY_4_PULL_DOWN_ENABLE | GPFUP_KEY_4_PULL_UP_ENABLE) << GPFUP_KEY_4) ;

隨後就可以在一個迴圈中實現按鍵功能。 

    按鍵的狀態儲存在寄存器GPFDTA中,根據手冊得知,如果GPF_KEY_3被按下,則GPFDTA的第3位儲存對應的狀態:pull_down 也就是 0

 1 while (1) 2     { 3         if ( KEY_PULL_DOWN == ((GPFDAT >> GPFDAT_KEY_0 ) & 0x01) ) 4         { 5             led_0_on(); 6         } 7         else if ( KEY_PULL_DOWN == ((GPFDAT >> GPFDAT_KEY_2 ) & 0x01) ) 8         { 9             led_1_on();10         }11         else if ( KEY_PULL_DOWN == ((GPFDAT >> GPFDAT_KEY_3 ) & 0x01) )12         {13             led_2_on();14         }        15         else if ( KEY_PULL_DOWN == ((GPFDAT >> GPFDAT_KEY_4 ) & 0x01) )16         {17             led_3_on();18         }19         else20         {}        21     }

至此可以實現按鍵點亮對應的LED燈。

 源碼: http://files.cnblogs.com/files/dgm3000/KEY.zip

【FL2416學習筆記】按鍵開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.