做键盘必备,抛掉ST-Link,通过USB烧录固件,STM32F103使用STM32duino-bootloader 踩坑记录

做键盘必备,抛掉ST-Link,通过USB烧录固件,STM32F103使用STM32duino-bootloader 踩坑记录

💡 原文中文,约3000字,阅读约需8分钟。
📝

内容提要

本文介绍了如何使用STM32F103C8T6微控制器替代ATmega32A制作键盘,以解决与MacBook连接不稳定的问题。通过STM32duino-bootloader,用户可以直接通过USB烧录固件,简化开发流程。文章详细说明了在macOS上的配置步骤,包括下载bootloader、使用ST-Link编程器以及在PlatformIO中的设置,最终实现了便捷的固件更新。

🔎

延伸解读

为何从ATmega32A转向STM32F103

文章指出,ATmega32A本身没有硬件USB接口,依赖USBaspLoader这类软件模拟方式实现USB通信。作者最初用它制作键盘时能与MacBook正常配合,但近期出现连接后很快断开的问题。因此转向带有硬件USB接口的STM32F103C8T6,以解决连接稳定性问题。这一背景说明,主控的USB实现方式直接影响与MacBook等设备的兼容性。

STM32duino-bootloader的便利与首次烧录限制

STM32duino-bootloader让STM32F103C8T6可以通过USB直接烧录固件,简化了后续开发流程。但文章强调,在未刷入该bootloader前,无法通过USB烧录,必须借助ST-Link编程器完成首次bootloader烧录。这意味着ST-Link并非完全弃用,而是仅在初始阶段需要,之后便可收起来,改用USB更新固件。

macOS平台上的配置要点与兼容性问题

文章针对macOS平台给出了具体操作:使用brew安装st-link命令行工具,通过st-flash命令烧录bootloader。在PlatformIO中需配置board_build.core = maple和upload_protocol = dfu等参数。作者还发现,PlatformIO上传时因工具链脚本在macOS上存在兼容问题而失败,需注释掉maple_upload文件中的upload-reset相关行。这提示macOS用户需留意该脚本的兼容性调整。

在QMK固件中启用USB烧录的配置

若要在QMK固件中使用STM32duino-bootloader,需在键盘的rules.mk中添加相应定义,如BOOTLOADER_TYPE = stm32duino、DFU_ARGS和DFU_SUFFIX_ARGS等。配置完成后,烧录固件时直接连接USB并使用qmk flash命令即可更新键盘固件,相比使用ST-Link更为方便。这为习惯USB烧录的用户提供了明确的配置路径。

❓

Q&A

为什么选择STM32F103C8T6替代ATmega32A制作键盘?

STM32F103C8T6具有更丰富的系统资源,能够更好地支持QMK固件,解决与MacBook连接不稳定的问题。

如何通过USB烧录STM32F103C8T6的固件?

首先需要使用ST-Link编程器烧录STM32duino-bootloader,之后可以直接通过USB连接开发板烧录固件。

在macOS上配置STM32duino-bootloader需要哪些步骤?

需要下载bootloader,使用ST-Link编程器烧录,并配置platformio.ini文件以支持STM32duino-bootloader。

使用PlatformIO时如何解决上传失败的问题?

需要修改tool-stm32duino中的上传脚本,注释掉不兼容的命令行内容。

STM32duino-bootloader的优势是什么?

STM32duino-bootloader允许用户直接通过USB烧录固件,简化了开发流程,操作更方便。

如何在QMK固件中配置使用STM32duino-bootloader?

在rules.mk文件中添加相关定义,声明使用STM32duino-bootloader,并配置MCU和BOOTLOADER_TYPE。

🏷️

标签

➡️

继续阅读