前言
前面我们直接在开发板上安装了GCC等开发环境,可以直接在板上进行开发。
刚好手里有个USB的游戏手柄,我们就来编写代码读取手柄按键,体验下板上直接C开发。
输入设备
插入USB手柄,可以看到多了/dev/input文件夹,多了event0设备
代码
vi key.c添加如下代码
1. /* 单独测试:#define KEY_TEST 1
1. * 作为接口:#define KEY_TEST 0
1. * 编译 aarch64-linux-gnu-gcc key.c -o key -lpthread
1. * 运行 chmod +x key
1. * ./key /dev/input/event8
1. */
1.
1. #include< stdint.h >
1. #include< stdio.h >
1. #include< stdlib.h >
1. #include< string.h >
1. #include< unistd.h >
1.
1. #include< pthread.h >
1.
1. #include < linux/input.h >
1. #include < sys/types.h >
1. #include < sys/stat.h >
1. #include < fcntl.h >
1.
1. #define KEY_TEST 1
1.
1. int s_keys_fd = -1;
1. uint32_t s_keys_state = 0;
1.
1.
1. void key_setstate(int code , int vaule, uint32_t* key)
1. {
1. if(vaule == 0)
1. {
1. switch(code)
1. {
1. case 296:
1. *key &= ~(1u< < 3);
1. break;
1. case 297:
1. *key &= ~(1u< < 4);
1. break;
1. case 288:
1. *key &= ~(1u< < 5);
1. break;
1. case 289:
1. *key &= ~(1u< < 8);
1. break;
1. case 290:
1. *key &= ~(1u< < 6);
1. break;
1. case 291:
1. *key &= ~(1u< < 7);
1. break;
1. case 292:
1. *key &= ~(1u< < 1);
1. break;
1. case 294:
1. *key &= ~(1u< < 2);
1. break;
1. default:
1. break;
1. }
1. }
1. else
1. {
1. switch(code)
1. {
1. case 296:
1. *key |= (1u< < 3);
1. break;
1. case 297:
1. *key |= (1u< < 4);
1. break;
1. case 288:
1. *key |= (1u< < 5);
1. break;
1. case 289:
1. *key |= (1u< < 8);
1. break;
1. case 290:
1. *key |= (1u< < 6);
1. break;
1. case 291:
1. *key |= (1u< < 7);
1. break;
1. case 292:
1. *key |= (1u< < 1);
1. break;
1. case 294:
1. *key |= (1u< < 2);
1. break;
1. default:
1. break;
1. }
1. }
1. }
1.
1. /*
1. * SELECT 296 SELECT 3
1. * START 297 START 4
1. * UP 288 右上 5
1. * RIGHT 289 右右 8
1. * DOWN 290 右下 6
1. * LEFT 291 右左 7
1. * A 292 左前上 1
1. * B 294 左前下 2
1. */
1. int key_getstate(int key)
1. {
1. if(s_keys_state & (1u<
编译
gcc key.c -o key
测试
按不同的按键,打印如下
总结
可以看到直接在板上开发非常方便,免去了交叉编译的繁琐。
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
计算机
+关注
关注
19文章
7385浏览量
87644 -
编程
+关注
关注
88文章
3574浏览量
93545 -
开发板
+关注
关注
25文章
4913浏览量
97095 -
交叉编译
+关注
关注
0文章
32浏览量
12618 -
单板计算机
+关注
关注
0文章
74浏览量
15608 -
RISC-V
+关注
关注
44文章
2216浏览量
45968 -
RISC-V处理器
+关注
关注
0文章
80浏览量
9981
发布评论请先 登录
相关推荐
昉·星光单板计算机正式发售,加速RISC-V生态发展
在RISC-V Summit 2021大会上,赛昉科技(简称“赛昉”)作为中国RISC-V软硬件生态的领导者,宣布“昉·
发表于 12-09 09:22
•1275次阅读
【昉·星光 2 高性能RISC-V单板计算机体验】VisionFive2开箱+安装Ubuntu
【昉·星光 2 高性能RISC-V单板计算机体验】VisionFive2开箱+安装Ubuntu
发表于 02-21 17:49
【RISC-V专题】赛昉科技昉·星光RISC-V单板计算机首发试用
!
上海赛昉科技作为此次活动的合作厂商,同步上线昉·星光RISC-V单板计算机(VisionFive
发表于 04-14 15:17
RISC-V VisionFive (昉星光单板计算机)系列课程
利用赛昉科技VisionFive单板计算机学习Linux系统第一期:交叉编译是什么第二期:学习和使用RISC-V(第一部分)第三期:在VisionF
发表于 04-15 15:01
【RISC-V专题】昉·星光 2(VisionFive 2)RISC-V单板计算机免费试用
VisionFive 2是全球首款集成3D GPU的高性能量产RISC-V 单板计算机 。与上一代相比,VisionFive
发表于 05-16 11:26
【昉·星光 2 高性能RISC-V单板计算机体验】2更换Debian操作系统
接上两篇:【昉·星光 2 高性能RISC-V单板计算机体验】1初识赛昉科技StarFive -
发表于 08-31 00:03
【RISC-V + OpenCV 计算机视觉】用 VisionFive 2 昉·星光 2 进行物体识别
广泛应用于视频监控、自动驾驶等领域。
基于Debain操作系统和OpenCV框架,赛昉科技在VisionFive 2(昉·星光
发表于 09-08 11:42
【昉·星光 2(VisionFive 2)RISC-V单板计算机】根目录扩容-愉快的install大型软件
【昉·星光 2(VisionFive 2)RISC-V单板计
评论