博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TQ210裸机编程(3)——按键(查询法)
阅读量:4920 次
发布时间:2019-06-11

本文共 1495 字,大约阅读时间需要 4 分钟。

首先查看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熄灭

 

转载于:https://www.cnblogs.com/suncoolcat/p/3367811.html

你可能感兴趣的文章
memcached全面剖析—— 客户端选择(一致性哈希算法)
查看>>
米洛个人修炼术:情绪的四种常用处理方式,其实都是有问题的
查看>>
[翻译] Virtual method interception 虚方法拦截
查看>>
--- git-svn 使用环境和步骤
查看>>
flutter AS 打包
查看>>
Python webpy微信公众号开发之 回复图文消息
查看>>
ubuntu多版本cuda并存与切换【两个博客链接】
查看>>
html5新特性之DOCTYPE声明
查看>>
POJ 3299 Humidex 难度:0
查看>>
快速切题 poj3414 Pots
查看>>
Linux 常用命令
查看>>
五家共井(第1届第3题)
查看>>
c文件操作
查看>>
《Spring In Action》 读书笔记(2) -- bean装配 ...
查看>>
很好很強大..
查看>>
Oracle之子查询:Top-N问题
查看>>
PAT:1011. A+B和C (15) AC
查看>>
JS中的内置对象
查看>>
Android--在Android应用中愉快地写C/C++代码(转)
查看>>
IOSUIcontrol事件
查看>>