TQ210裸机编程(3)——按键(查询法)
首先查看TQ210的底板原理图
这次编程只操作KEY1和KEY2,在TQ210核心板原理图中搜索XEINT0
可以看出KEY1和KEY2分别接在S5PV210的GPH0_0和GPH0_1引脚。
这次编程使用查询法,需要设置这两个引脚为输入模式,然后循环读取引脚状态,当用户按下按键时,对应引脚为低电平,同时改变LED状态。
查看S5PV210芯片手册
start.S
.global _start @声明一个全局的标号
_start:
bl main @跳转到C函数去执行
halt:
b halt @死循环
key.c
#define GPC0CON *((volatile unsigned int *)0xE0200060)
#define GPC0DAT *((volatile unsigned int *)0xE0200064) #define GPH0CON *((volatile unsigned int *)0xE0200C00)
#define GPH0DAT *((volatile unsigned int *)0xE0200C04) void delay(volatile unsigned int t)
{
volatile unsigned int t2 = 0xFFFF;
while (t--)
for (; t2; t2--);
} int main()
{
int key_val = 0;
int bit;
GPC0CON &= ~(0xFF << 12);
GPC0CON |= 0x11 << 12; // 配置GPC0_3和GPC0_4为输出:LED1和LED2 GPH0CON &= ~(0xFF << 0); // 配置GPH0_0和GPH0_1为输入:key1和key2 while (1)
{
key_val = GPH0DAT & 0x3;
if (key_val)
{
delay(500000); // 防抖延时
key_val = GPH0DAT & 0x3; if (key_val)
{
if (0x01 == key_val) // key1
GPC0DAT ^= 1 << 3; // toggle LED1
else if (0x02 == key_val) // key2
GPC0DAT ^= 1 << 4; // toggle LED2
}
}
} return 0;
}
Makefile
key.bin: start.o key.o
arm-linux-ld -Ttext 0x20000000 -o key.elf $^
arm-linux-objcopy -O binary key.elf $@
arm-linux-objdump -D key.elf > key.dis key.o : key.c
arm-linux-gcc -c $< -o $@
start.o : start.S
arm-linux-gcc -c $< -o $@ clean:
rm *.o *.elf *.bin *.dis
下载程序方法参加《TQ210裸机编程(1)——点亮一个LED》
下载程序运行后:
按下key1,LED1点亮,再次按下key1,LED1熄灭
按下key2,LED2点亮,再次按下key2,LED2熄灭
TQ210裸机编程(3)——按键(查询法)的更多相关文章
- TQ210裸机编程(4)——按键(中断法)
S5PV210有4个向量中断控制器(VIC),每个向量中断控制器包含32个中断源. 当某个中断源产生中断时,CPU会自动的将VICxVECTADDRy(x=0,1,2,3,y=0-31)寄存器的值赋给 ...
- 【ARM】2410裸机系列-按键查询式控制led
开发环境 硬件平台:FS2410 主机:Ubuntu 12.04 LTS LED灯原理图 按键原理图 按键的接线资源 KSCAN0 -> GPE11 KSCAN1 -> GPG6 ...
- TQ210裸机编程(2)——LED流水灯
两个文件start.S和led.c start.S .global _start @声明一个全局的标号 _start: bl main ...
- S5PV210(TQ210)裸机编程
本文很多其它的是教会大家怎样学习. 4.1 汇编学习 4.1.1 基础知识 4.1.2 ARM模拟器 4.2 S5PV210启动流程 4.3 点亮一个LED 4.4 串 ...
- 裸机编程与OS环境编程的有关思考
这里的所谓的裸机编程指的是为“无OS支持的硬件系统编程”,而实际的编程工作肯定需要一个环境,通常这样的情况中,编程和编译的环境叫做“宿主机”,最终的程序在“目标机”上运行(交叉编译).而OS环境编程指 ...
- SQL编程之高级查询(子查询)以及注意事项
SQL编程之高级查询(子查询)以及注意事项 1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...
- paip.sql索引优化----join 代替子查询法
paip.sql索引优化----join 代替子查询法 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.n ...
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为 ...
- Arcgis engine编程报错查询(转)
Arcgis engine编程报错查询 标签: arcgis arcengine arcgisengine 2016年04月10日 17:29:35429人阅读 评论(0) 收藏 举报 分类: Ar ...
随机推荐
- 【兼容】IE下PNG色差
IE(包括IE7)中的PNG色差问题http://bbs.blueidea.com/thread-2910513-1-1.html修正IE对PNG颜色显示错误的问题http://www.lizhenw ...
- 【 D3.js 高级系列 — 4.0 】 矩阵树图
矩阵树图(Treemap),也是层级布局的扩展,根据数据将区域划分为矩形的集合.矩形的大小和颜色,都是数据的反映.许多门户网站都能见到类似图1,将照片以不同大小的矩形排列的情形,这正是矩阵树图的应用. ...
- 【转】 Homebrew – OSX下简单的包管理系统
很多linux用户很喜欢 (Debian/Ubuntu)系列的apt包管理系统和(Redhat/Fedora)系列的yum包管理系统. 包括Windows用户都有多种方便的软件管理工具,如:360软件 ...
- JS组件Bootstrap实现弹出框和提示框效果代码
这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...
- xmlns 属性
xmlns 属性 xmlns 属性可以在文档中定义一个或多个可供选择的命名空间.该属性可以放置在文档内任何元素的开始标签中.该属性的值类似于 URL,它定义了一个命名空间,浏览器会将此命名空间用于该属 ...
- SGU 134 Centroid
题意:给出一个树,每个点有一个value,value的意义是去掉这个点之后所有连通分量中点最多的那个连通分量的点数,这棵树的重心为所有点value的最小值,求重心,及重心都有谁. 解法:貌似是个树形d ...
- 什么是MBeanServer
什么是MBeanServer MBeanServer是一个包含所有注册MBean的仓库.它是JMX代理层的核心.JMX1.0规范提供一个接口叫 javax.management.MBeanServer ...
- HDU 4276-The Ghost Blows Light(树状背包)
题意: n个房间,每个有一定的钱,一个房间到另一个房间花费一定的时间,给你房间连接树,求在t时间内到达房间m能得到的最大钱数(从房间1(根)出发) 分析: 该题关键是最后要到达m,没有这个条件,就是基 ...
- 如何查看.Net FrameWork,VC++ 等安装包的启动参数
最近做了一个客户端的程序,客户端程序运行环境要求是.Net FrameWork 4.0 和VC++ 2012 ,在做安装包的时候需要先检测系统环境是否存在这些环境,不存在则安装对应环境. 使用工具来制 ...
- Integrating JavaScript into Native Applications
JavaScriptCore 简介 iOS7 中新加入的 JavaScriptCore.framework 可能被大多数开发人员所忽略,但是如果你之前就在项目中用过自己编译JavaScriptCore ...