天嵌 ARM开发社区

 找回密码
 注册
查看: 1729|回复: 0

TQ210裸机编程(3)——按键(查询法)

[复制链接]
freewing 发表于 2014-6-8 00:55:58 | 显示全部楼层 |阅读模式
首先查看TQ210的底板原理图




这次编程只操作KEY1和KEY2,在TQ210核心板原理图中搜索XEINT0



可以看出KEY1和KEY2分别接在S5PV210的GPH0_0和GPH0_1引脚。

这次编程使用查询法,需要设置这两个引脚为输入模式,然后循环读取引脚状态,当用户按下按键时,对应引脚为低电平,同时改变LED状态。




查看S5PV210芯片手册





start.S





[cpp] view plaincopy
01..global _start              @声明一个全局的标号  
02._start:  
03.    bl main                 @跳转到C函数去执行  
04.halt:  
05.    b halt                  @死循环  

key.c





[cpp] view plaincopy
01.#define GPC0CON     *((volatile unsigned int *)0xE0200060)  
02.#define GPC0DAT     *((volatile unsigned int *)0xE0200064)  
03.  
04.#define GPH0CON     *((volatile unsigned int *)0xE0200C00)  
05.#define GPH0DAT     *((volatile unsigned int *)0xE0200C04)  
06.  
07.void delay(volatile unsigned int t)  
08.{  
09.    volatile unsigned int t2 = 0xFFFF;  
10.    while (t--)  
11.        for (; t2; t2--);  
12.}  
13.  
14.int main()  
15.{  
16.    int key_val = 0;  
17.    int bit;  
18.    GPC0CON &= ~(0xFF << 12);  
19.    GPC0CON |= 0x11 << 12;        // 配置GPC0_3和GPC0_4为输出:LED1和LED2  
20.      
21.    GPH0CON &= ~(0xFF << 0);  // 配置GPH0_0和GPH0_1为输入:key1和key2  
22.      
23.    while (1)  
24.    {  
25.        key_val = GPH0DAT & 0x3;  
26.        if (key_val)  
27.        {  
28.            delay(500000);      // 防抖延时  
29.            key_val = GPH0DAT & 0x3;  
30.              
31.            if (key_val)  
32.            {  
33.                if (0x01 == key_val)        // key1  
34.                    GPC0DAT ^= 1 << 3;        // toggle LED1  
35.                else if (0x02 == key_val)   // key2  
36.                    GPC0DAT ^= 1 << 4;        // toggle LED2  
37.            }  
38.        }  
39.    }  
40.      
41.    return 0;  
42.}  

Makefile





[cpp] view plaincopy
01.key.bin: start.o key.o  
02.    arm-linux-ld -Ttext 0x20000000 -o key.elf $^  
03.    arm-linux-objcopy -O binary key.elf $@  
04.    arm-linux-objdump -D key.elf > key.dis  
05.      
06.key.o : key.c  
07.    arm-linux-gcc -c $< -o $@  
08.start.o : start.S  
09.    arm-linux-gcc -c $< -o $@  
10.      
11.clean:  
12.    rm *.o *.elf *.bin *.dis  

下载程序方法参加《TQ210裸机编程(1)——点亮一个LED》

下载程序运行后:

按下key1,LED1点亮,再次按下key1,LED1熄灭

按下key2,LED2点亮,再次按下key2,LED2熄灭




转载来源:http://blog.csdn.net/zjhsucceed_329/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-26 19:51 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表