En 0755-86038900
行业动态

友坚4412开发板Linux平台下iNAND的优点

发布时间:2015-04-10

友坚4412检测按键的操作方法

深圳ARM方案定制知名企业友坚恒天开发板平台,专业提供5260开发板,4412开发板,ARM等开发板定制方案.

UT4412BV03中共有9个用户按键,原理图如下:

 

相关引脚:

 

完整代码见目录12.key_query,代码和上章的区别也就是main.c文件了,下面就讲解:

1. main.c

检测按键函数:

unsigned int key_map[9] = {2, 5, 8, 3, 6, 9, 4, 7, 10};

 

unsigned int check_key (void)

{

unsigned int row,col,tmp1,tmp2,val;

unsigned int key_val;

 

tmp1 = 0x01;  // tmp2用于检测出哪一列

for(col=0; col<3; col++)

{

GPX1DAT = 0x07; //先将列全置高

 

GPX1DAT = ~tmp1 ;//使第一列全置低

tmp1 *=2; // tmp1左移一位

 

val = GPX2DAT;

if((!(val & (1 << 0))) | (!(val & (1 << 1))) | (!(val & (1 << 2)))) //检测是否有哪行为0

{

tmp2 = 0x01;     // tmp2用于检测出哪一行为0

for(row =0;row<3;row++)   // 行检测

{

if((!(val & tmp2)))

{

delay(140000);

if((!(val & tmp2)))

{

key_val = key_map[col*3+row];

return key_val;

}

}

tmp2 *=2; // tmp2左移一位

}

}

}

return 0;

}

查找哪个按键被按下的方法为:一个一个地查找。

先第一列输出0,检查行线是否非全高;

否则第二列输出0,检查行线是否非全高;

否则第三列输出0,检查行线是否非全高;

如果某列输出0时,查到行线非全高,则该列有按键按下;

根据第几列线输出0与第几行线读入为0即可判断在具体什么位置的按键按下

sd卡插入PCUbuntu终端执行如下命令:

#cd 12.key_query

#make

#sudo ./sd_fusing.sh /dev/sdb bl2.bin

sd卡插入UT4412BV03中,选择sd卡启动,然后上电。然后按下K2按键4LED全亮再按下K3按键4LED全灭。

了解更多的信息在友坚开发板官网:http://www.urbetter.net    http://www.urbetter.com.cn
更多问题请到友坚论坛进行发贴讨论:
http://bbs.urbetter.com