手中屯了一大波的STM32F103C6T6,为啥,因为便宜呗,淘宝用个劵,2-3块左右包邮就可以拿下,不知不觉快屯了几十块板子了;之前用的STM32duino的bootloader是罗杰*克拉克大哥写的,不过这个bootloader已经7年未更新了:
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
哦,不对,是5年,再一个这个bootloader太大
22KB啊!!对于空间本来就捉襟见肘的c6t6来说根本就是噩梦啊,他flash才32KB,RAM才10KB
关键有个问题,我用这个boot编出来的代码跑USB键盘兼容性不好,在几台win11电脑无法识别,win10上面又是好的,很苦恼,但是人家电脑就是win11啊,不可能换电脑吧!给大家看看用的编译环境,选开发板和板子就是这两个,用的bootloader就是这个22KB的,这样才能正常使用:
问题来了嗦,这个兼容性不好的问题有没有突破口啊,搜索了一圈发现了一个好东西啊,HID-bootloader啊,对就是下面这个,你们看看:
https://github.com/Serasidis/STM32_HID_Bootloader
这个bootloader可厉害了,才2KB啊,简直就是福音啊:
不得不说,色拉思*迪思这哥们厉害
说啥,赶紧烧录进去试试啊,找到这个release就开始烧录然后安装环境:
安装环境,就是这个:
Arduino_Core_STM32 Core
添加管理文件:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
装完就是哪个,看看,就算是这个:
这个2KB的bootloader:
嘻嘻嘻嘻,我diu,什么情况啊,无法识别啊,简直坑爹,最后看了看介绍,他这个bootloader是基于C8T6编译的:
扑该啊,简直是! C8T6是20KB的RAM+64KB的flash,好在手上有一个C8T6的开发板,烧录进去果然能正常运行呢,但是不能就此放弃吧,手上那么多的C6T6开发板呢?我的哥心啊,哇凉哇凉的。
不行不行,我要寻找突破口,我要自己编译固件!!!
最终在本人坚(反)持(复)不(试)懈(探)下总算编译成功了这个能用于C6T6的HID-bootloader固件,看看这个库的issue,好多老外也是想用C6T6,结果没能成功,唉。
这个固件终于编译成功了,可以用于C6T6,奉献给大家:
通过网盘分享的文件:hid_bootloader-STM32F103C6T6.bin
链接: https://pan.baidu.com/s/1lZbdG0PvU_oAcZwTvqUFKg?pwd=xviy 提取码: xviy
通过网盘分享的文件:generic_boot20_pc13.bin
链接: https://pan.baidu.com/s/1qLjaUR6fzP5mYw5fh8SUOg?pwd=8snk 提取码: 8snk
这两个固件一个是2KB的一个是22KB的,烧录进去都能识别到设备,前面那个是HID的设备,后面这个是maple-dfu的设备,LED对应的都是PC13-小蓝板。
这样就能使用STM32F103C6T6的HID-bootloader愉快的玩耍了。
不过这个bootloader有个不好的地方就是烧录用户程序后重新烧录的话需要重新插拔以及将boot1的跳线改为1才可以再次烧录,烧录完成后又需要把boot1跳线改为0才能跑用户程序。
烧录成功界面:
随便选一个串口:
还有一个问题,就是烧录的时候需要随意选一个串口,不然arduinoIDE识别不了烧录不了。
这就是我今天的分享,希望对使用STM32F103C6T6+HID-bootloader的小伙伴有用,谢谢大家!