全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【昉·星光 2(VisionFive 2)RISC-V单板计算机】板上

时间:2023-07-21 09:06

人气:

作者:admin

标签: RISC-V  计算机  交叉编译 

导读:前面我们直接在开发板上安装了GCC等开发环境,可以直接在板上进行开发。...

前言

前面我们直接在开发板上安装了GCC等开发环境,可以直接在板上进行开发。

刚好手里有个USB的游戏手柄,我们就来编写代码读取手柄按键,体验下板上直接C开发。

输入设备

图片1.png

插入USB手柄,可以看到多了/dev/input文件夹,多了event0设备
图片2.png

代码

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

测试

按不同的按键,打印如下
图片3.png

总结

可以看到直接在板上开发非常方便,免去了交叉编译的繁琐。

审核编辑:汤梓红

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信