mini2440之GPIO控制按键的方法
来源:互联网 发布:saas企业级软件服务 编辑:程序博客网 时间:2024/05/22 01:52
在mini2440里控制按键方法有使用终端和只用GPIO口控制,初学者在接触时不免有些陌生,下面将简单介绍如何利用GPIO口控制按键。
首先建立一个(.c)的源文件和(.h)的头文件。简单介绍按键模块的开发过程:
1、找到该设备-à2、在原理图上找该设备-à 3、分析该设备的特点
K1—没按下,EINT8信号为高;按下,EINT8信号为低
K2—没按下,EINT11信号为高;按下,EINT11信号为低
2、找出该信号接到CPU的哪里。---在原理图上,名字相同的信号代表连通。
K1---EINT8----》GPG0
K2---EINT11----》GPG3
3、找出该引脚的控制寄存器
K2 K1---GPGCON [7:6,1:0]à00 00 输入功能
读GPGDAT 对应的位是0—》按键按下;对应的位是1—》按键没按下
GPGUP 不使能
4、封装函数。
这个功能是利用按键控制led灯的亮灭,key1~key4控制led1~led4,key5控制灯全亮,key6控制灯全灭:
/************************************************* Copyright (C), 2016-2020, xmetc Co., Ltd. File name : key Author :lifngguo Version :V1.0 Date : 2016-8-5 Description : keys control leds on/off Others : none History : 1. Date : 2016-8-4 Author : lifngguo*************************************************/#include "2440addr.h"#include "key.h"extern void Delay_MS( unsigned int time);//延迟void key_init(void){volatile unsigned int temp;temp = rGPGCON;//配置按键GPGCONtemp &= ~((3<<22) | (3<<14) | (3<<12) | (3<<10) | (3<<6) | (3<<0));//清零 00为输入rGPGCON = temp;//回写temp = rGPGUP;//上拉电阻禁止temp |= ((1<<11) | (1<<7) | (1<<6) | (1<<5) | (1<<3) | (1<<0));//1rGPGUP = temp;}int key_scan(void)//扫描按键{int key = NO_KEY_PRESS; unsigned int temp;temp = ~rGPGDAT; //按键按下--0,取反--未按下为0temp = temp & ((1<<11) | (1<<7) | (1<<6) | (1<<5) | (1<<3) | (1<<0));//temp的值按键位都是1switch(temp){case 1:{key = KEY1;break;}case 1<<3:{key = KEY2;break;}case 1<<5:{key = KEY3;break;}case 1<<6:{key = KEY4;break;}case 1<<7:{key = KEY5;break;}case 1<<11:{key = KEY6;break;}default:{key = NO_KEY_PRESS;break;}}return key;}int return_key_num(void)//功能:去抖 去重复{int key = NO_KEY_PRESS;if((key = key_scan()) != NO_KEY_PRESS)//电平拉低{Delay_MS(1);//去抖if((key = key_scan()) != NO_KEY_PRESS)//有按键按下{while(key_scan() != NO_KEY_PRESS);//按键没有弹起 去重复return key;//返回按键值}}}在使用按键的时候要注意去抖动和去重复。
在头文件中声明一些定义和一些使用到的函数:
/************************************************* Copyright (C), 2016-2020, xmetc Co., Ltd. File name : key Author :lifngguo Version :V1.0 Date : 2016-8-5 Description : define key number and declare functions Others : none History : 1. Date : 2016-8-5 Author : lifngguo*************************************************/#ifndef _KEY_H_#define _KEY_H_extern void key_init(void);extern int key_scan(void);extern int return_key_num(void);#define NO_KEY_PRESS 0#define KEY_PRESS 1#define KEY1 1#define KEY2 2#define KEY3 3#define KEY4 4#define KEY5 5#define KEY6 6#endif
/*******************************结束**************/
#ifndef _KEY_H_#define _KEY_H_
<pre name="code" class="cpp">#endif这三句代码是防止头文件被重复定义,宏展开的时候只要展开一次就可以了
这个就是简单的GPIO口空按键的使用方法。
0 0
- mini2440之GPIO控制按键的方法
- 【ARM】s3c2440之gpio按键控制
- 基于boa服务器的web控制mini2440的GPIO口
- mini2440按键中断和LED gpio
- mini2440裸机试炼之--按键控制蜂鸣器和LED
- jz2440裸板开发之GPIO:用按键控制led
- s5pv210的gpio控制方法
- mini2440 按键控制LED 驱动
- ARM开发板mini2440的按键控制LED小程序
- mini2440按键中断控制led灯遇到的问题
- 基于mini2440的按键中断控制LED(裸机代码)
- 基于JZ2440的按键控制GPIO灯的亮灭
- LPC2124--GPIO按键控制LED灯的闪烁
- 修改mtk平台power按键的gpio控制口
- mini2440的按键驱动
- mini2440的按键驱动
- mini2440硬件篇之GPIO
- STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关
- Java.Web学习笔记 自定义标签
- 20160805 笔记之移动图表
- Java socket通信实例,简单入门socket实例代码
- Eclipse 高亮显示选中的相同变量
- Java.Web学习笔记 资源国际化
- mini2440之GPIO控制按键的方法
- 求一个字符串数组的实际长度
- 数据库表散列web.xml 配置
- 导航部分第一个li错位的问题
- Java.Web学习笔记 XML
- java中toCharArray()方法的使用
- LeetCode:206. Reverse Linked List
- hibernate3与spring2.5.6整合Demo
- LeetCode:328. Odd Even Linked List