【FL2416学习笔记】按键开发

先上图:

      

所以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

时间: 2024-11-02 13:24:13

【FL2416学习笔记】按键开发的相关文章

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

[学习笔记]面向对象开发中的一些思想和原则

摘自<Java与模式>作者阎宏 面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭) "开-闭"原则的手段和工具: 1)里氏代换原则:任何基类出现的地方,子类一定可以出现: 2)依赖倒转原则:要依赖于抽象,不要依赖于实现: 3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的: 4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用: 5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

[java基础学习笔记]Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 主要内容: ---------------------------------------------------| 1.JDK的下载与安装                            | 2.编写第一个java程序HelloWorld     | 3.编译执行HelloWorld                      

perl学习笔记--搭建开发环境

windows下perl开发环境搭建 perl下载地址:http://www.activestate.com/developer-tools 各个插件的安装方法:(通过代理上网的方法) 方法一:padwalker的安装步骤 1. padwalker下载地址: http://www.bribes.org/perl/ppm/ 2. 解压下载的文件 4. 拷贝 blib/lib/PadWalker.pm 到 Perl/lib(你的安装路径)5. 拷贝 blib/arch/auto/PadWalker

IBatis .NET 开发学习笔记&mdash;&mdash;.NET 开发环境搭建

大家好,今天给大家带来的是web应用程序配置,至于windows应用程序或者其他类型解决方案可以相同的配置,web应用程序配置文件为web.config,windows应用程序是app.config. 通过以下步骤可以建立属于你自己的环境: 1.首先,肯定是打开Visual Studio(文章后面简称VS),如果你有其他工具开发,我也不介意,反正我用VS,VS目前最新版是2013,不过我喜欢复古,所以,我目前用安装VS2010来当作教程,不管目前是多少版本了,都可以同理得到. 2.然后,新建一个

bootstrap学习笔记(网页开发小知识)

这是我在学习Boostrap网页开发时遇到的主要知识点: 1.导航条navbar 添加.navbar-fixed-top类可以让导航条固定在顶部,固定的导航条会遮住页面上的其他内容,除非给<body>元素设置了padding. 导航条的默认高度是50px,比如设置:body{ padding-top:70px} 2.下拉菜单 注意:可以通过data属性API就能使用所有的Bootstrap插件,无需写一行JavaScript代码.这是Bootstrap中的一等API,也应该是你的首选方式. &

Android学习笔记-传感器开发之利用传感器和Tween开发简易指南针

本次我们学习Android传感器的开发,前面已经介绍过了,tween的使用,所以,我们可以结合传感器与tween动画,开发简易的指南针. 首先先介绍一下传感器的相关知识, 在Android应用程序中使用传感器要依赖于android.hardware.SensorEventListener接口.通过该接口可以监听传感器的各种事件.SensorEventListener接口的代码如下: package android.hardware; public interface SensorEventLis

安卓开发学习笔记-安卓开发之环境配置

作为一个工作了五年左右的C#资深开发程序员,虽然知道现在开始学安卓开发有点半路出家的味道,但是俗话说技多不压身,由于大学期间学习了java这门语言,而安卓开发又是以java作为开发语言,所以我感觉自己可以稍微涉足安卓,不求涉深,只求能懂,当然如果能有小成,也是我所希冀的. 要想学习安卓开发,首先肯定是配置安卓开发环境,安卓开发不像是asp.net或者winfrom.mvc之类的,直接安装完一个vs了事,然后你就可以大行其道的进行基于C#语言的项目开发了,搭建安卓开发环境,首先我们需要安装java