zoukankan      html  css  js  c++  java
  • 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熄灭

  • 相关阅读:
    SqlServer存储过程函数加解密[极有用]
    BMDThread控件动态创建多线程示例
    cxGrid右键自定义菜单
    越狱中Michael的一种疾病
    静态链表
    单行编辑框SelectText()
    开机得按F1
    jquery调用页面后台方法‏
    .net调用存储过程详解
    javascript兼容各种浏览器的异步请求
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3367811.html
Copyright © 2011-2022 走看看