感谢这次的活动,让我体验了STM32H503的开发。
找开发攻略的读者,推荐高手付明的帖子,我不再重复。
https://forum.eepw.com.cn/forum/read/threadid/382646/postid/1480148
https://forum.eepw.com.cn/forum/read/threadid/382661/postid/1480215
https://forum.eepw.com.cn/forum/read/threadid/382689/postid/1480274
我从事单片机开发工作多年,对这次的活动,本来是信心满满的,但这次却多次掉进坑里,让我觉得可以记录一下自己中弹的伤疤,分享一下自己的感受。或许可以为其他人提供一些参考。整个活动我投入时间累计超过20小时,仅仅能勉强完成课程的实验。如果把这个活动的难度按1-5分来评级,我认为可以打4分。
1. 中弹伤疤
1.1 系统搭建
安装开发环境,按照各种攻略教程,本应该是很简单的事情。结果我折腾了至少3次才成功。
要点A:必须是windows 10以上的系统
要点B:要先卸载旧版本的uvision,否则容易出错
要点C:参考各个教程,务必用的指定开发工具版本
要点D:用一台快的电脑,减少折腾时间
即使是跟着教学视频来做,安装过程中的错漏难免会出现,反复几次很正常。避开以上的坑,会明显减少折腾次数。
1.2 Printf
单片机用printf输出DEBUG信息,居然会导致单片机不能正常运行,这是始料未及的。代码编译成功,烧写到芯片里也成功,但就是不能正常工作。折腾一轮后才从大神们的提示里知道编译选项里要勾选MicroLib这个选项。数小时就这么耗费掉了。
1.3 排线与排针间距不同
这次活动的器件排线座与开发板的插针间距居然不同。本来就被莫名其妙的问题折腾到要崩溃的时候,再来一个插针居然插不进排线的问题,真的是在考验人的耐性啊。好在我取巧,直接破坏排线座,硬性把线连接成功。
1.4 USB HID的天坑
这是整个活动最大的坑,我有一半以上的时间卡在这里了。如果没有执着的信念,建议就直接放弃吧。
第一次失败:首先是按照教学视频完成所有操作,结果教学里只有代码片段,生成的程序无法编译通过。于是浏览各个大神的攻略,东拼西凑,终于能编译成功,但烧写到芯片后无法工作。反复检查,找不到做错了什么,只好放弃。
第二次尝试:用stmcubemx生成USB HID MOUSE例子代码,结果只有STM32H533的例子代码。折腾了一轮,根本就转不到STM32H503上,此路似乎不通。
第三次尝试:上论坛看大神的分享,终于看到一个完整的项目,以为看到了曙光。https://forum.eepw.com.cn/thread/382197/1
下载了整个项目的代码,可以正常编译、烧写到板子里。可以板子就是不工作。本来以为是小问题,于是仔细检查每一个细节,反复尝试。累计耗费多个小时,完全找不到方向。最后只能放弃。
第四次尝试:重新回到论坛,看到付明大神的帖子。老老实实按照帖子完成了所有的操作,终于把代码拼凑出来。编译过程中的琐碎问题,只要耐心看错误信息就能解决。烧写到板子上,终于能够找到新的USB设备。挥舞手势,终于出现收到pageup pagedown的按键动作。筋疲力尽!所有的创意想法都没有动力去完成了。
2. 对STM32H503和STMCUBEMX 的评价
我之前用过STM32F030,用传统的库作为基础,手工写初始化代码。用了STMCUBEMX,通过勾选,生成代码,的确是简化了起步的工作,对于有简单的想法,需要快速验证,这是非常好的工具。
STM32H503能跑250mhz的速度,是我用过的最快的单片机了。我相信未来会有大量的单片机能跑这个速度,而且价格应该会变得很便宜。很多以前需要ASIC或者FPGA来辅助实现的项目,可能用快速单片机就能完成了。
单片机内运行操作系统是我第一次接触的,在没有深入学习的情况下,不能很客观的评价这种开发模式,直觉是太缺少演示的实例。如果仅仅是做一个USBHID设备,非常不建议用这种模式开发,明显是杀鸡用牛刀,把简单问题复杂化。如果是USB入门学习,推荐用STM32F103作为这类项目的入门平台。
3. 对这次活动的思考
单片机能做更多事情了,让开发者有更广阔的创意空间。作为一个从业者,体验新的创新模式是很有必要的。我很认同项目组织者的说法,这次的开发过程是把任务拆分成多个小任务,逐个解决,然后再整合在一起。用心参与,体验遇到的困难,享受解决问题的快感,是一次很有意思的旅程。衷心感谢组织者的付出。
4. 成果截图
来张全家福
串口收到的结果