一、制作原因和实现的功能
1、原因:电脑每次开机都需要输入登录密码,感觉很麻烦,就想着能不能用单片机做一个USB键盘,按一下自动给电脑发一串密码实现开机。后来又想,其实不用按键也行,用延时,延时到电脑开机再发送密码就好了,于是便有了这个制作。
2、功能:将做好的USB插入电脑,电脑开机以后实现自动输入密码,完成登录。
USB键盘
二、需要准备的东西
一个STM32f103c8t6最小系统板
一个5V转3.3V模块,
一个USB公头
几根杜邦线,
三、过程中遇到的问题
第一次使用USB,先是看原子哥的视频,进行学习,然后发现还是不会弄,对USB的通讯感觉很困惑,网上很多都再推荐《圈圈教你玩USB》这本书,不过我还没来的及去看,对想了解USB的人来说,我想应该是本不错的书。
在CSDN上看了很多相关的文章后,对USB的描述符,和数据格式有了大致了解,开始尝试修改网上的一些代码,但是网络资源的质量参差不齐,即使是一些VIP资源,有的也是要么没有注释,看着难受,要么就是照搬别人的东西,乱七八糟的放着,而且最重要的还是内容错误百出。总之搞了很长时间,我还没有搞出来,时间大部分都浪费在了重复的、无用的低质量文章上了。但是这其中也有很多博主的文章很好,让我对USB的知识了解的更多了。
对USB的描述符有了更清晰的认识以后,回头再去看ST官方例程和其他博主的代码,突然顿悟。在他们的基础上,潜心修改以后,烧录上电,成功实现功能。最主要的,我感觉还是USB的描述符,要明白他们代表的含义、层次之间的关系,例如,在配置描述符中,描述接口的数量,在接口描述符中再描述端口的数量,两个端口一个输出、一个输入。要了解什么是HID,它和USB之间是什么关系,HID描述符中的HID协议版本号,并不等于USB协议版本号,将这些配置成功,才能继续往下操作。
四、部分代码
五、5伏转3.3伏模块
六、总结
全部代码和包含STM32F103C8T6最小系统板在内的电路图,我已经放在了文章最后的附录中,大家可以参考学习。此外,制作的这个东西,我没有加按键功能,大家需要的可以根据已有代码自行补充添加相关内容。程序中有注释,相信大家看了以后应该都能明白,不明白的也可以留言,一起交流。同时我也希望更多的开源作者能够在开源的同时,将代码注释写的再清楚一点,这样大家看着也更方便一些。关于USB全速模式需要在D+引脚接1.5K 的电阻,以及其他相关的USB基础内容,这里并没有详细介绍。第一次写博客,文章中有很多地方可能写的比较浅薄,不够好,欢迎大家指出。我也会不断学习,虚心接收大家的意见,争取做的更好,谢谢大家。
七、附录
1、程序
百度网盘链接:https://pan.baidu.com/s/1t34ubf8S_-bd9MilYFMC7w?pwd=67by
提取码:67by
2、电路
百度网盘链接:https://pan.baidu.com/s/1GIcad5HBB5prwExXiXe2AQ?pwd=21nf
提取码:21nf