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

  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3367811.html
Copyright © 2011-2022 走看看