拓冰建站拓冰建站
首页 / 资讯中心 / 正文

QMK 固件中的 LvL Type-01/80(rev_hs01):TKL 键盘的编译、刷写与硬件配置解析

QMK 固件中的 LvL Type-01/80rev_hs01TKL 键盘的编译、刷写与硬件配置解析【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware本篇技术指南以 QMK Firmware 仓库中 keyboards/artifact/lvl/rev_hs01 的官方说明为主体结合该键盘的keyboard.json、config.h、rules.mk与默认键位等源码文件系统讲解 LvL Type-01/80 这款 STM32F072CB 主控的标准 TKL PCB 如何在 QMK 中完成编译、进入刷写模式、烧录固件以及其矩阵、指示灯与 RGB 灯带的底层硬件配置。读完本文你将能够独立完成该键盘以及同一 LvL 系列的固件编译与刷写流程并理解 QMK>make artifact/lvl/rev_hs01:default该命令的语义是make keyboard:keymapartifact/lvl/rev_hs01为键盘路径default为默认键位位于 keymaps/default/keymap.c。编译产物.hex/.bin固件文件会输出在 QMK 构建目录中供后续刷写使用。2.3 默认键位内容默认键位使用LAYOUT_tkl_ansi_tsangan布局宏定义了完整的 TKL ANSI Tsangan 底排键位左 1.5U Ctrl/Win/Alt、7U 空格、右侧 1.5U Alt/App/Ctrl导航区为 Ins/Home/PgUp、Del/End/PgDn、方向键集群[0] LAYOUT_tkl_ansi_tsangan( /* Base */ KC_ESC, KC_F1, KC_F2, ..., KC_PSCR, KC_SCRL, KC_PAUS, KC_GRV, KC_1, ..., KC_INS, KC_HOME, KC_PGUP, KC_TAB, KC_Q, ..., KC_DEL, KC_END, KC_PGDN, KC_CAPS, KC_A, ..., KC_LSFT, ..., KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT)完整键位可见 keymaps/default/keymap.c。如需自定义键位可按 QMK 惯例在keymaps/name/keymap.c新建目录后执行make artifact/lvl/rev_hs01:name。三、进入刷写模式Reset / DFU 模式该键盘的主控为 STM32F072CBbootloader 为stm32-dfu见 keyboard.json。与 AVR 键盘常见的RESET键码不同LvL Type-01/80 官方推荐的进入刷写模式方法是硬件层面的「通电时序」拔掉 USB 线Unplug按住键盘上的EscapeESC键不放插入 USB 线Plug In再次拔掉 USB 线Unplug松开 Escape 键。此时键盘即停留在 DFU 引导模式等待固件写入。整个流程本质上是利用 STM32 的 Boot0 强制启动逻辑上电瞬间保持某个 GPIO 为低电平ESC 键所在列被拉低即可让芯片进入 DFU Bootloader而非运行已烧录的应用程序。四、刷写固件CLI 一键式与 QMK Toolbox进入 DFU 模式后即可烧录编译好的固件。官方推荐两种方式4.1 命令行一键刷写在仓库根目录执行make artifact/lvl/rev_hs01:keymap:flash其中keymap可以是default即make artifact/lvl/rev_hs01:default:flash该命令会自动调用dfu-util或 QMK 配置的默认刷写工具烧录刚编译出的固件并等待设备进入 DFU 模式后写入。4.2 QMK Toolbox 图形化刷写如果不习惯命令行也可以使用 QMK Toolbox先在刷写工具中加载编译产物固件文件随后按第三节的时序让键盘进入 DFU 模式Toolbox 检测到STM32 DFU设备后点击 Flash 即可完成写入。五、硬件配置深度解析源码级readme 只给出了用法而硬件如何被 QMK 识别与驱动则完整记录在 keyboard.json 与配套头文件中。理解这些字段有助于排查按键失灵、指示灯异常、RGB 灯不亮等问题。5.1 主控、USB 标识与 Bootloaderprocessor: STM32F072, bootloader: stm32-dfu, usb: { device_version: 0.0.1, pid: 0x4C56, vid: 0x8968 }processor指定编译目标为 STM32F072Cortex-M0 内核决定使用 ARM/ChibiOS 构建链路bootloaderstm32-dfu说明通过 USB DFU 协议刷写vid/pid0x8968:0x4C56 为设备 USB 标识由 Yiancar-Designs 分配系统据此识别设备。5.2 矩阵扫描配置diode_direction: COL2ROW, matrix_pins: { cols: [A1, B9, A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14, B15, A8], rows: [A2, A14, A15, B3, B4, B5] }采用COL2ROW列扫描输出、行读入方式二极管方向为列到行矩阵规模为6 行 × 17 列正好覆盖 87 键 TKL 并留出冗余行列均直接映射到 STM32F072 的 GPIO 引脚PA1、PB9、PA3……这是 QMK>indicators: { caps_lock: B6, on_state: 0 }Caps Lock 指示灯接在 PB6 引脚on_state: 0表示低电平点亮开漏/低有效对应的板级初始化在 rev_hs01.c 中完成led_init_ports()将 LED 引脚配置为开漏输出void led_init_ports(void) { // Set our LED pins as open drain outputs gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN); }从这里可以推断PCB 上 Caps Lock 灯为共阳/下拉式设计因此采用开漏输出 低有效点亮的组合。5.4 板载 RGB 灯带WS2812键盘带有单颗 WS2812rgblight.led_count: 1并使用 PWM 驱动rgblight: { animations: { alternating: true, breathing: true, christmas: true, knight: true, rainbow_mood: true, rainbow_swirl: true, rgb_test: true, snake: true, static_gradient: true, twinkle: true }, default: { sat: 0 }, led_count: 1 }, ws2812: { driver: pwm, pin: A9 }数据引脚为 PA9使用pwm驱动PWM 的具体硬件通道在 config.h 中指定#define WS2812_PWM_DRIVER PWMD1 #define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM5 #define WS2812_PWM_DMA_CHANNEL 5 #define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB即使用 TIM1PWMD1产生 WS2812 时序信号通过 DMA1 Stream5 搬运数据颜色字节序为 RGB相应地halconf.h 打开HAL_USE_PWMmcuconf.h 打开STM32_PWM_USE_TIM1二者共同确保 ChibiOS PWM 外设在编译期可用默认饱和度设为 0default: { sat: 0 }出厂效果为白色/无色灯效。5.5 布局与社区布局keyboard.json中定义了两种物理布局宏LAYOUT_tkl_ansi_tsanganANSI 主键区 Tsangan 底排默认键位使用LAYOUT_tkl_ansi_wklANSI WKL无 Win 键缺口底排变体。同时声明community_layouts: [tkl_ansi_tsangan]使该键盘的 Tsangan 布局可被 QMK Configurator 等社区布局系统复用。两种布局均以x/y坐标 键宽w精确定义了每一颗键帽的物理位置这也是 QMK 据此生成键位图与可视化配置的基础。5.6 DFU 固件兼容性扩展rules.mk 中有一行特殊配置# Wildcard to allow APM32 MCU DFU_SUFFIX_ARGS -v FFFF -p FFFFdfu-suffix通常会把厂商/产品 ID 写入固件后缀以便校验此处以通配符FFFF覆盖从注释可以看出这是为了兼容 APM32 系列 MCUSTM32 的国产兼容替代避免刷写校验因 ID 不符而失败。这也解释了为什么主控标注为 STM32F072CB 而固件后缀不锁定具体 VID/PID。六、常见问题与排错建议编译报错找不到 ARM 工具链确认按 docs/getting_started_build_tools.md 完整安装依赖并确认 ChibiOS 子模块已初始化。刷写时设备无法识别检查是否严格按第三节时序操作拔线 → 按住 ESC → 插线 → 拔线 → 松开 ESC并用dfu-util -l或 QMK Toolbox 确认设备处于 DFU 模式。Caps Lock 灯不亮确认indicators.caps_lock对应 PB6、on_state: 0低有效若硬件为高有效需改为on_state: 1以实物电路为准。RGB 灯无反应确认features.rgblight已启用、ws2812引脚为 PA9且halconf.h/mcuconf.h中的 PWM 与 TIM1 开关未被裁剪更换按键布局不影响 RGB 行为。七、延伸阅读docs/getting_started_make_guide.mdMake 命令完整语法make keyboard:keymap与:flash后缀docs/flashing.md各主控平台的通用刷写指南docs/data_driven_config.mdkeyboard.jsoncontenteditable="false">【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门