中级会员
- 积分
- 422
- 金钱
- 422
- 注册时间
- 2020-5-25
- 在线时间
- 44 小时
|
发表于 2021-3-12 17:33:03
|
显示全部楼层
原子的的教程有led的也有key的,但但是单独的,用key控制led的好像没有,不过可以结合这两个例程,先按教程的安装好led驱动与key驱动,然后将keyAPP修改一下,比如为testApp.c,内容如下面我改的,最后进入开发板进行测试:./test_app /dev/dtsplatled /dev/key,结果是按一下按键灯亮,再按一下灯灭,如此反复!
int main(int argc, char *argv[])
{
int fd_led, fd_key, retvalue;
char *ledname,*keyname;
unsigned char databuf[1];
int keyvalue;
static char bLed = 0;
if(argc != 3){
printf("Error Usage!\r\n");
return -1;
}
ledname = argv[1];
keyname = argv[2];
/* 打开led驱动 */
fd_led = open(ledname, O_RDWR);
if(fd_led < 0){
printf("file %s open failed!\r\n", argv[1]);
return -1;
}
/* 打开key驱动 */
fd_key = open(keyname, O_RDWR);
if(fd_key < 0){
printf("file %s open failed! error code:%d\r\n", \
keyname, fd_key);
return -1;
}
/* 循环读取按键值数据! */
while(1) {
read(fd_key, &keyvalue, sizeof(keyvalue));
if (keyvalue == KEY0VALUE) { /* KEY0 */
bLed = !bLed;
printf("KEY0 Press, value = %#X\r\n", keyvalue); /* 按下 */
databuf[0] = bLed;/* 向/dev/led文件写入数据 */
retvalue = write(fd_led, databuf, sizeof(databuf));
if(retvalue < 0) {
printf("KEY Press Fail:%d\r\n", keyvalue);
close(fd_led); /* 关闭文件 */
}
}
}
close(fd_led); /* 关闭文件 */
close(fd_key); /* 关闭文件 */
return 0;
}
|
|