GEC210 按键裸机开发 原理介绍

发布者:技术旅人最新更新时间:2022-07-28 来源: csdn关键字:按键  裸机开发 手机看文章 扫描二维码
随时随地手机看文章

开发环境: ADS1.2  或者 arm-linux-gcc4.4.1


开发板  : GEC210(s5pv210 soc)


原理部分:


按键部分作为cpu的输入信号,按键表现为cpu外部事件输入的一种简单形式。


对cpu而言,需要获取按键的状态,那么这种方式便是输入模式,cpu需要主动获取io引脚的电信号,才能知道按键是否按下。而按键按下本身是外部事件,不受cpu控制。Cpu想知道按键的情况,一种就是查询方式,每隔一段事件去查看按键是否按下,另一种便是中断方式,有按键按下时,主动打断cpu,告诉cpu按键按下了。


今天我们先看看比较简单的查询方式。


查询方式的原理较简单,每隔一段时间(比如100ms,或者比这个时间值更小)就查询一下按键的状态,这样就能正确获得按键的信息。


但是这个地方有一个麻烦,就是间隔的时间如果太长,那么很有可能有按键的动作,cpu就识别不到。比如cpu每隔10s查询一次按键的状态,但是我按键的动作持续1s,所以就会出现有按键动作但是cpu不会察觉的状态。


当然,细心的朋友会发现,cpu很多时候都在做空转,因为大部分时间都不会有按键,但是cpu还是要不断查询。这是查询方式的特点,所以才有后来的中断方式(以后再介绍中断方式)。


接下来还是


第一个步骤:看原理图


看原理图基本要弄清两个问题


a)   设备工作原理(可能需要查看相关理论知识及芯片文档)


b)   设备与cpu的连接关系

图1 按键原理图(210KFBDBV1.1.pdf第4页)

图2 按键与cpu的连接关系(210kfb-core-v11.pdf 第2页)


通过查看pdf文件相关按键的部分,可以看到图1,图2的部分,我们截取了主要的相关部分,这里分成了两个原理图,因为这个开发板原理图分为两个部分,一个核心板,一个底板,所以要分开看,但是核心板和底板是靠排插这种连接器连接在一起的,原理图部分需要多注意。


我们将两个图合并说明如下:

图3 按键原理图


在这个图上我们可以看到,按键没有按下时是高电平,按下后是低电平,每一个按键独立连接一个GPIO引脚,8个按键分别连接在GPH2的0-3#引脚和GPH3的0-3#引脚上。


也就是说平时没有按下按键时,读取的值应该是1,有按键按下时读取的值是0(每一个按键对应一个位).


所以此时应该出现


第二个步骤:看SOC相关章节


GPIO部分基本与led的介绍类似,这里我们基本省略,需要说明的是led使用的是输出模式,而按键是需要使用输入模式的。


好,直接跳到相应的寄存器部分(328页)。


与led的寄存器一样,6个寄存器中我们只关心con和dat寄存器。


好接下来事情就好办了,只有两个寄存器需要我们认真关心,小开心一下吧。但是我们要认真理解一下这两个寄存器哦,第一次接触总有点疏忽,没关系,多看两遍了。。。


1、控制寄存器------配置引脚功能的寄存器(32bits)

该寄存器有32位,每4位控制一个引脚的功能,所以该寄存器可以配置8个引脚的功能,每4个位的含义与具体描述相匹配


如果配置某个引脚为输入模式,即对应的4个位写为0000(二进制形式),等效于16进制的0x0。其他功能以此类推。


2、数据寄存器(注意该寄存器的描述部分)


1)让引脚配置成输入的时候,我们读取数据寄存器,可以得到引脚的输入状态值(0或1)


2)当一个引脚配置成输出的时候,可以通过该寄存器控制引脚的输出状态(0或1)


3)当引脚配置成功能引脚,读该寄存器的时候,读到的值是不确定的。

该寄存器只有8位,每一个位对应一个引脚。特别注意与CON寄存器的32位不同。


输出模式的时候,这个寄存器的某一位决定对应引脚的状态


输入模式的时候,这个寄存器的某一位反应(记录)了引脚的状态。


cpu的运算只能计算二进制的数值,而引脚是电平信号,二进制1就表示引脚的高电平,二进制0就表示引脚的低电平


好现在基本流程走完


我们通过上述已经知道:


1)   对cpu而言,按键是外部事件,cpu不可控,只能使用查询或中断方式知道按键是否按下


2)   从原理图看出,按键按下是低电平,松开是高电平


3)   对应的引脚找到,GPH2组的0-3#引脚,GPH3组的0-3#引脚,一共8个引脚,每个引脚控制一个按键


4)   GPH2/GPH3组的引脚我们需要配置为输入模式,修改GPH2CON寄存器的值,比如配置第0#引脚,就设置GPH2CON的低4位为0x0。


5)   读取GPH2DAT/GPH3DAT寄存器的值,才能知道按键是否按下,有按键按下时,对应的位值为0,没有按下时,对应的位值为1。


好了原理就讲到这了。做了led的程序,按键应该知道怎么做了吧。。。


顺便提醒一句:


输出模式:指的是cpu想控制引脚的状态(cpu主动)


输入模式:指的是cpu想获取引脚的状态(cpu被动,且无法预知)


这两个模式都与电流的方向无关。


写程序吧,实现一下功能:


前4个按键点亮对应的led,后4个按键熄灭对应的led。

关键字:按键  裸机开发 引用地址:GEC210 按键裸机开发 原理介绍

上一篇:s5pv210-nand-驱动-1
下一篇:GEC210 led流水灯C语言实现 ADS工程

推荐阅读最新更新时间:2024-11-11 07:11

12864汉字液晶显示--按键电子时钟程序
#include reg52.h #include intrins.h #define uchar unsigned char void lcd_ini(); void ascii_change(void); void delay(); void wri_add(uchar com); void wri_dat(uchar com1); void shan(void); void disp(); void tkey(void); sbit cs=P1^7; sbit sid=P1^6; sbit sclk=P1^5; bit flag=1; uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态 ucha
[单片机]
单片机按键切换下一首歌
#include at89x51.h #define uchar unsigned char #define uint unsinged int sbit speaker=P1^5;//蜂鸣器。按键默认的是P3.2脚(外部中断0) uchar t0h,t0l,time,flag; //-------------------------------------- //单片机晶振采用12MHz // 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据 uchar code FREQH ={0x01, //0的时候没有音符
[单片机]
只用串口和网络裸机开发ARM程序(OK6410开发板)
最近要学习ARM开发板,想按着单片机的套路,首先开发裸机程序。百度了下,大部分的裸机程序都是用RVDS或者ADS开发,用JLink 或者JTag烧写到Sdram中去执行。由于在ubuntu下使用习惯了,想脱离集成开发环境,所以在Linux下使用arm-linux-gcc 等工具开发。首先遇到的问题就是开发好的二进制文件怎么烧到板子上运行呢? 百度上给出的大部分方法是通过Uboot 来烧写,用Uboot的DNW烧写进去,但是我用的环境是Win7 64bit,DNW的USB驱动死活装不上,而且,也懒得找别人借条OTG线,所以这个途径就不考虑了。继续google,找到了一种方法,通过Uboot的Tftp 功能把二进制文件烧写到开发板
[单片机]
PIC16C71单片机按键换醒CPU源程序
简介:本文给出PIC16C71单片机按键换醒CPU源程序,希望对感兴趣的朋友有所帮助。 ;p=pic16c71,xt=40000hz LISTP=16c71 ; ZEQU2 RBPUEQU7 TEMPEQU10H OPTIONREGEQU1H FEQU1 PORT_BEQU06H ; INCLUDE P16c71.INC LIST ; ORG0;复位地址 GOTOSTART ; ORG4;中断向量 GOTOSERVICEINTERRUPT ; START CALLINITPORT_B;初始化B口 LOOP SLEEP;省电睡眠,等待被唤醒
[单片机]
STM32按键控制LED的亮灭
使用一个按键控制 LED 的亮灭,按键按下时LED亮起,按键松开时LED熄灭。通过按键控制实验来介绍下 IO 口作为输入的使用。本例中用到了GPIOE的PE3管脚。 LED和按键的电路图。 按键 K_LEFT、K_DOWN、K_RIGHT 分别连接在 STM32 F1 芯片 的 PE2、PE3、PE4引脚上。 按键另一端是全部接在 GND 上,这个和我们学习 51单片机 是一样的,采用独立式按键接法,按下时输入到芯片管脚即为低电平。 整个程序实现的流程步骤如下: 初始化按键使用的 端口 及 时钟 按键 检测 处理 按键控制处理 工程文件目录如下。 IO口初始化程序代码在key.c文件中。 /**********
[单片机]
STM32<font color='red'>按键</font>控制LED的亮灭
未来汽车仪表盘将采用无按键设计
根据预测,未来触摸屏和手势控制等系统的销售将继续增长   是时候宣告按键的时代已经过去了吗?如果你爬进任何一辆近期的概念车,比如BMW i Vision Future Interaction、讴歌Precision或大众汽车T-Cross Breeze,你将会惊奇的发现这些车的仪表盘是多么干净整洁,完全没有传统的按钮或旋钮。 如今,汽车工程师们正在将这种仪表盘设计理念推广至量产车型。 IHS Automotive研究显示,未来5年中,方向盘控制、语音识别、触摸屏和手势控制系统的全球销量将大幅激增,具体如下: • 方向盘:增长11% • 语音识别:增长12% • 触摸屏:增长13% • 手势控制:增
[嵌入式]
MSP430用按键中断控制定时器产生持续 1s 的周期信号
////////////////////////////////////////////////////////////////////////////////////////////////////// // 2012 年吉林省大学生电子设计大赛 C题 声源定位系统 ----(声源部分) // 要求: 有信号产生电路, 放大电路, 声音频率 800Hz 左右, 按一次键响声持续 1 秒. // 声源模块体积不超过 4cm*4cm*4cm. //==========================================================================================
[单片机]
jz2440裸机开发与分析:内存控制器4之SDRAM设置
LDR R0,=0X30000000 ➡CPU发给内存控制器:①发出nGCS6;②根据(SDRAM)类型拆分地址:a,BANK地址,b,行地址, c,列地址 ;③读数据 LDR R1, 问题:如何拆分?行地址几条?列地址几条? 2440内存控制器设置 1、BWSCON寄存器配置=0x22000000 2、BANKCON6寄存器配置 3、REFRESH刷新寄存器配置 4、BANHSIZE配置 5、MRSRB6 SDRAM中有一个MR寄存器(含有CL),用来确定列地址到发出数据中间间隔的时间,而2440内的MRSRB6寄存器也有一个CL,2440根据内部CL设定的值,再通过发送数据去确定SDRAM中的C
[单片机]
jz2440<font color='red'>裸机</font><font color='red'>开发</font>与分析:内存控制器4之SDRAM设置
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved