本帖最后由 icecut 于 2019-3-18 11:45 编辑
毕业之后,遇到stm32科技行业的人,是活到老学到老. 我刚毕业的时候,却是一个开始. 离开了学校,才知道什么是企业想要的.什么是我自己欠缺的.当时我准备认真的找一个arm可以长期的学习, 资源要比较丰富,或者可以升级.需要有潜力,学了可以长时间收益.这时候,我遇到了stm32f1, 这个经典的芯片,在现在依然是很多工程师的首选,成了最顺手的芯片.
可不可以爽一下?当时单片机局限非常大, 投入的多, 就要去从一个芯片扩展外设,扩展io,扩展ram, 当时水平比较菜,把这一些外设都折腾好,手里却只有万用表,的确是完不成的.所以我和大家一样,买一个144pin的芯片就成了一个比较开心的选择.不光硬件菜,软件也菜, 写出来的代码必须调试一下才能成功.硬件仿真不比纯软件,虚拟环境因为没有可以配合的外设,基本上形同虚设.这个stm32还带一个jtag,大大提高了学习效率.替代了串口打印,也跳过了不稳定的usb转串口,如纯软件编程一样简单,能够不在乎引脚,片上外设一大堆,出错可以直接加断点.让我后学生时代的学习效率大大提高.
让我看懂文档,帮我写好代码?好多人和我一样,善于逻辑推理,但逻辑推不出英文语法,看英文芯片手册依然成了,被虐和虐别人的乐趣.然而,我们可以看到了好多官方翻译版的文档, 虽然有些词汇有一些湾湾的感觉,毕竟也是自家语言, 不管你懂不懂, 你看到"自举"的时候,依然能猜到"boot"就是这个伙计.猜错了也无所谓,要不就沿用一下自举吧...哈哈哈... 我们来自看芯片手册和调试寄存器的时代,当然也是被坑最多的年代.我们以此为乐,以搞得定寄存器,来说明自己的牛x之处.而软件工程师,因为站在巨人的肩上,能够做出更多的产出,从而赢得更高的工资.我们开始用st的标准库.好像没有人告诉我,标准库的文档或者使用教程哪里有? 大家都是根据开发板的教程,或者自己去看库代码,跌跌撞撞的跑了起来.无疑这就是一个顺风车.不用自己按bit去写代码了.果然我们进入了新时代.
能不能更加人性化?说实话, 硬件工程师是勤快的,但软件工程师是懒惰的,代码多了程序不一定更好.更精炼的代码或许是更好的出路. st的标准库支持芯片多了,的确理解起来有点困难,依然是艰苦的岁月.然后stm32cubeMx出现了, 作为在软件方面有长期修炼的我,发现这太棒了.生成的代码少了.更符合软件设计的规范了.或许一些底层工程师觉得有点怪,至少我是比较愿意使用的. 设计一块新板子之后,只需要点点点,然后生成一个工程.然后在main函数里下个断点,只要跑到断点,这板子就成功了一半.当时一个软件高手跟我说,你调硬件的时候,就用别人写好的软件,如果你学软件的时候,就买别人调好的硬件,否则一把抓,两边都出错.果然我不用写软件了.还不用花钱买别人的代码,最关键的时候,我配置出来的代码就是专门为我的设计生成的.我能说这就是做火箭的感觉么?
代码里面有黄金古语言道:书中自有黄金屋, 我说这代码里面,有白金. st生成的代码里,已经集成了不少常用的代码,比如freertos, usb device, host,以及fatfs等.这么多东西,都节约自己去搞了.要不,咱们就细细分析一下,为什么st的代码会是这个设计? 正好赶上21ic做在线公开课,我也就凑个热闹给大家讲st的代码你究竟该怎么用,如何读懂这些代码为自己提高水平.尤其是是设计的比较好的usb部分, 让我这个曾经在寄存器层写代码的人,深深的感动.虽然自己写的代码更小,但是留下了很多可能存在的不稳定,而st的代码处理的更加优秀,经历过这些,就更能体会到代码的价值.我依然推荐大家去看,曾经,usb是个复杂的东西,而现在,我们有了这么多官方代码之后,我们可以更简单的搞定这些.甚至我们会去学习这些原厂的代码,知其然知其所以然.你便是行业高手.
后技术时代st的新设计依然很多,比如MP系列,你可以说给stm32加上了高端arm, 让你的成品更加的有深度可挖. 这个又回到最初,工程师对资源的需求有一次得到了满足, 内存可能不再是限制,操作系统也不再是限制,计算能力依然不限,唯有那曾经的实时性设计,在stm32上永存.对于我这个老手,是个轮回的结束,而对于刚毕业的你们,却是轮回的开始.
|