注:本文章只为交流学习
开发环境
atmega32u4 mu
此芯片只有64k储存
本人实现的是标准17键PAD
右上角是为OLED屏幕预留的四个针脚
因为atmega32u4是有44个针脚,除了type-c和重置按钮的三个针脚以外,只有25个针脚可以使用,本键盘矩阵占了9个针脚,OLED占了2个针脚,RGB灯占了1个针脚,还有13个针脚未使用,为以后开发方便,特地把13个针脚引出来。
PCB背面
预留5脚热插拔相关孔位,采用WS2812led灯(轴座和灯都为反贴)
下面是我的开源文件
工程主页链接:https://oshwhub.com/peacehj/20-pad
编辑器打卡工程链接:https://lceda.cn/editor#id=e50b24de4df04b6d9029d10190be4d2c
QMK编写
首先是编写rules.mk文件(个人认为此文件是启用键盘功能的申明)
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# comment out to disable the options.
#
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
CONSOLE_ENABLE = no # Console for debug(+400)
COMMAND_ENABLE = no # Commands for debug and configuration
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover (全键无冲)
BACKLIGHT_ENABLE ?= no #背灯,因为没有设计背灯,所以关闭该功能,可以减小芯片内存占用
AUDIO_ENABLE = no #音量调节
RGB_MATRIX_ENABLE = yes #RGB矩阵
RGB_MATRIX_DRIVER = WS2812 #RGB类型
LTO_ENABLE = yes #压缩指令,可以减小芯片内存占用
OLED_ENABLE = yes #打开OLED屏幕指令
OLED_DRIVER = SSD1306 #OLED驱动类型
然后是编写键盘矩阵***.h(此处为键盘名字,我的为hj.h)
#ifndef KB_H #不知道啥意思,QMK固件要求的
#define KB_H #不知道啥意思,QMK固件要求的
#include "quantum.h" #不知道啥意思,QMK固件要求的
#define LAYOUT( \
K00, K01, K02, K03, \
K10, K11, K12, \
K20, K21, K22, K23, \
K30, K31, K32, \