![a5ad796d9abdb22d88982cf0f9d95f6.jpg]
![4db5b7c94cde2772f8cc13f2686a3d4.jpg]
![2b5d04a83093072452b072691576878.jpg]
![4de0420b81942c2e58bf82800e679d9.jpg]
有几个按键没有键帽,见谅
打定位板的话大概率出现50元,请使用亚克力
外形来源于<https://oshwhub.com/hirykun/megupad_v2-0-yuan-li-tu>,因此螺丝可以查考他的,做了修改,最最重要的是原点对齐!强迫症好受多了
贴图基本都是原神图片,不喜欢请替换
# 1.系统说明
采用AIR32F103CBT6芯片,RGB为SPI驱动WS2812,带0.96寸OLED,AT24C128进行存储,
热插拔按键,使用二极管实现全键无冲设计,旋钮目前只能调节音量。
<font color="#dd0000">注意1:oled不能直接焊接
排针,需要对比上板进行焊接,否则上板不能安装</font>
<font color="#dd0000">注意2:oled模块自带
上拉电阻,r9,r8可以不焊接,没有oled的话需要焊接</font>
# 2.软件说明
## 2.1QMK
固件说明
尝试过QMK固件,我也会在后面把配置方案发出来,qmk可以实现不用外置eeprom存储,可以使用via,但是不建议,有以下问题
1. ws2812无法使用spi或者pwm驱动,应该是air32的问题
2. oled挂载
总线为PB8 PB9的i2C,编译qmk固件后下载后会卡死不能运行,不用i2c可以运行,应该也是air32的问题
## 2.2自制固件
为了解决qmk的弊端,包括我觉得qmk的
1. 自定义程度不高,很多不可见
2. 每次编译耗时超久
3. VIA软件真不好用
等原因
我自己编写了软件,软件整体框架可以查看源码,基本思路和之前键盘一样,不过那个键盘是我的第一个复杂设计,很多问题,包括晶振,usb乱放,瞎几把放电阻和电容等问题,目前主要实现了以下功能
1. 按键输入(一次最多14个按键,实际上理论上可以支持62个键一起,但是太多没啥用)
2. 鼠标功能模拟
3. 离线设置,可以在键盘上切换键盘层、RGB、OLED休眠时间、亮度、鼠标、滚轮移动距离
4. 音量控制
5. UF2固件更新,一次下载后不用下载器
6. 采用RTX5嵌入式OS编程,可扩展性强,air32频率为144Mhz,理论上比32更加快
# 3.使用说明
## 3.1下载说明
1. 第一次下载请使用下载器下载uf2boot.bin文件,之后按住旋钮按键插入USB即可进行uf2模式,电脑会出现U盘,将uf2格式文件拖入即可完成下载,uf2文件起始地址为0x8004000
2. 灯闪烁即为uf下载模式
## 3.2使用说明
### 3.2.1上位机使用
![Snipaste_2022-10-09_16-53-02.png]
刷新后会出现多个,请尝试连接如图所示的VID和PID设备,连接的上会连接成功,连接不上会提示连接失败,都不行请尝试重新拔插。连接郭一次,会记录,下次可以直接连接。
![Snipaste_2022-10-09_16-56-46.png]
连接成功后,需要先读取层数,然后读取按键配置,之后点击按键就可以显示当前按键的情况,点击更改配置就可以更改
![image.png]
建议在输入捕获框中输入按键,会自动增加按键,不过注意删除要在按键值框中删除,实际上是以“+”作为分隔符,因此也可以自己输入,按键名在右边,必须对于,否则会提示错误
![image.png]
按键确认后不用点击重新读取就可以读取,重新读取只适用点击单个按键读取这个按键
灯光控制一看就会就不多说了
<font color="#dd0000">注意:按键层的切换在下位机,如果上位机没读取,切换层是不显示的,你在上位机1层改按键,下位机如果是2层的话,修改按键也是2层的</font>
### 3.2.2下位机说明
下位机按键布局同上位机一样,这里就说按键多少对应位置和上位机相同
#### 3.2.2.1层切换
下位机一共5层,分别是按键123层,RGB和OLED设置层,鼠标层
通过按住旋钮按键,然后点击4或者6进行前后切换,切换后松开
#### 3.2.2.2 RGB和OLED设置
松开旋钮
1. 8和9控制R大小
2. 9和12控制G大小
3. 10和11控制B大小
4. 7和14控制RGB模式(其中模式8还没有)
5. 4和5控制oled亮度
6. 1和2控制OLED休眠时间
#### 3.2.2.3 鼠标设置
松开按键
1. 5 12 8 10分别为鼠标上下左右
2. 4和6位鼠标左右键
3. 9为中间
4. 7和14位滚轮
5. 11和13为鼠标移动距离秀海
6. 1和2位为滚轮距离修改
# 4.二次开发说明
<font color="#dd0000">注意:二次开发需要经验,由于程序xjb乱写的,且相比stm32有很多不同,理论上是可以通用,但是有写地方需要重新修改</font>
## 4.1替换其他32说明
1. 整体采用stm32cubemx生成,但是进行了诸多魔改,直接用ioc生成会替换很多修改过的文件,请合理备份USB库和main.c文件
2. mian.c中
```
USB_Port_Set(0);
HAL_Delay(100);
USB_Port_Set(1);
```
这个为air32专用实现usb重新枚举
3. SystemClock_Config();实现了完全修改,使系统频率为144mhz
4. 虽然用的mdk编程,但是用的vscode的eide,不能直接使用mdk,要用的话需要添加相关文件,用vscode安装eide后应该可以直接导入
## 4.2 其他说明
1. 上位机采用vs2022 c# .net4.6编写,调用了hidsharp库
2. 查看代码建议从rtx5.c入手,因为采用rtos,这里面是创建的线程,文件尽量采用一个功能一个文件
![image.png]
3. eide中以下设置需要注意,安装目录不同,需要添加引用
![image.png]
4. 起始地址如下
![image.png]
main.c开头需要添加中断向量表重映射到0x8004000
5. 转换uf2格式需要配合脚本并添加生成后任务
![image.png]
6. uf2.bin固件编译环境为ubuntu 16.04
# 目前还未完成的工作
1. 上位机捡漏
2. oled没有动画
3. typec缺少cc两个5.1k电阻,c to c线可能有问题