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

来源:互联网 发布:铁路造价软件下载 编辑:程序博客网 时间:2024/05/20 02:29

首先查看TQ210的底板原理图



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

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

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熄灭


0 0
原创粉丝点击