码迷,mamicode.com
首页 > 其他好文 > 详细

【FL2416学习笔记】按键开发

时间:2015-03-17 23:28:25      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

    先上图:

技术分享      技术分享

技术分享

所以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            4
10 #define GPF_KEY_2_INPUT     0x00
11 #define GPF_KEY_2_OUTPUT    0x01
12 
13 #define GPF_KEY_0            0
14 #define GPF_KEY_0_INPUT     0x00
15 #define GPF_KEY_0_OUTPUT    0x01
16 
17 
18 #define KEY_PULL_DOWN    0x0
19 #define KEY_PULL_UP      0x1
20 
21 
22 #define GPFUP_KEY_0                    0
23 #define GPFUP_KEY_0_DISABLE            0x00
24 #define GPFUP_KEY_0_PULL_DOWN_ENABLE   0x01
25 #define GPFUP_KEY_0_PULL_UP_ENABLE     0x10
26 
27 #define GPFUP_KEY_2                    2
28 #define GPFUP_KEY_2_DISABLE            0x00
29 #define GPFUP_KEY_2_PULL_DOWN_ENABLE   0x01
30 #define GPFUP_KEY_2_PULL_UP_ENABLE     0x10
31 
32 #define GPFUP_KEY_3                    3
33 #define GPFUP_KEY_3_DISABLE            0x00
34 #define GPFUP_KEY_3_PULL_DOWN_ENABLE   0x01
35 #define GPFUP_KEY_3_PULL_UP_ENABLE     0x10
36 
37 #define GPFUP_KEY_4                    4
38 #define GPFUP_KEY_4_DISABLE            0x00
39 #define GPFUP_KEY_4_PULL_DOWN_ENABLE   0x01
40 #define GPFUP_KEY_4_PULL_UP_ENABLE     0x10
41 
42 /*
43 GPFDAT 保存当前按键的状态
44 */
45 #define GPFDAT_KEY_0             0
46 #define GPFDAT_KEY_2             2
47 #define GPFDAT_KEY_3             3
48 #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         else
20         {}        
21     }

至此可以实现按键点亮对应的LED灯。

 源码下载地址: http://files.cnblogs.com/files/dgm3000/KEY.zip

【FL2416学习笔记】按键开发

标签:

原文地址:http://www.cnblogs.com/dgm3000/p/4345777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!