当前位置:首页 > 天道酬勤 > 正文内容

stm32主要学什么(Linux开发stm32的优点)

张世龙2021年12月21日 20:08天道酬勤770

01话题

我经常为大学生同学烦恼。 我是学STM32还是嵌入式linux?

这个问题很多人都有自己的意见,今天我想从各个角度谈谈我知道的事实,希望能给大家一些启发。

02STM32确实不错

首先,必须承认STM32确实不错。 甚至到了STM32成为单片机MCU的代名词的程度。 现在,很多人在单片机的情况下,默认说STM32,但实际上有很多单片机。

STM32的第一大优点是就业机会确实多,社会需求多。 大家学习什么技术图?

还不是为了找工作挣工资。

当然,我承认大家都有更大的理想,但是即使想制造火箭,毕业后也能找到工作赚钱。

所以,如果你让我学点东西不需要公司,找不到工作,那就学点东西没错。

请在各个招聘网站上搜索一下。 STM32相关的岗位真的很多。 如果STM32在玩,找工作真的不是问题。

而且,大部分地方城市都有工作机会。 这更不寻常。

总而言之,学习STM32是没错的。 这至少能让你工作。

STM32的第二大优点是,他是典型的MCU,你可以掌握足够的MCU开发能力。 也就是说,即使在工作中需要使用其他MCU,例如NXP的LPC系列、Cypress、TI的MCU系列,也完全没有接触过这些。

但是,如果熟练使用STM32,就可以马上致力于这些MCU的开发。

最后,STM32的另一个优点是生态已经建成,影响力很大。 现在很多国产MCU制造商如GD、国民技术等上市的国产MCU也是以STM32为对象的,在开发方式和固件库方面也和STM32非常相似。

综上所述,掌握STM32确实有帮助。 STM32最大的特点是,实际上掌握这个技能有助于找到工作,可以在单片机硬件和软件工程师这条路上先出发,迈出第一步。

03STM32的极限

不能说STM32不好。 只能说有限度。

STM32最大的极限是它只是一台单片机。

也就是说,你学习的是STM32,其实都是单片机相关的技术。

比如在GUI上,学STM32的话,可能会学emWin、touchgfx、littlevgl等,但是很少学QT和安卓的那些吧。 因为STM32一般不跑这些。 (目前QT也有QT for MCU,在STM32H7也有合作,但应用面有限,大多数项目无法使用)。

所以,虽然你学的GUI技术都用在MCU领域,但是这些都是将主流GUI的前端和业务逻辑分离的设计模式(典型的是微软的WPF、Android或者web前端的设计,

例如,对于互联网APP,STM32的大多数APP通信都没有网络。 即使有网络,也经常使用通信模块,几乎不需要基于插座层直接编程。 这是网络编程的重要技能。

所以,做STM 32年以上的工程师,很多实际上对网络不熟悉,完全不了解。

客观看待STM32

从客观上看,STM32开发确实是电子相关专业学生可以去学习的技能。

或者,如果打算学习单片机的话,STM32绝对是首选。

当然,并不是优先只学习STM32。 其实,我个人更推荐的单片机学习路径是:先用51入门,然后升级到STM32,这样符合学习规律,学习效率会更高。

所以学习STM32是没错的。

但是,并不是说只学习STM32,这一点必须搞清楚。

苹果很好吃。 吃苹果对身体有好处。 你只吃苹果吗?

所以我对STM32的正确态度是:

第1条:去学习是没错的。 学这个一定有用。 第二条:不是必须要学的,如果你的工作不是单片机开发,其实STM32不行也没影响。 第3条)不仅要学习STM32,还必须扩展其他技能。 不这样做的话,面太窄了,是有限度的。

05嵌入式Linux是STM32最好的扩展

如果STM32已经很好了,建议扩展linux进行学习。

很多人认为linux的使用不像STM32那么广泛,使用linux的设备不像STM32那么多,即使在招聘地,linux相关的也不像STM32那么多,所以应该学习STM32而不是linux。

这个看法是错误的。

从这个角度比较了STM32和linux,但这两个东西无法比较。

比较这两者就像比较自行车和轿车一样。 自行车的优势是便宜、容易修理、不堵车、不交停车费、油耗低等。 你可以说自行车相对于轿车的很多优势,但是应该买轿车的你会给他自行车店吗?

轿车是自行车的延伸,linux是STM32的延伸。 类似的理由。

后者相对于前者是升级的关键,不是平行关系。

06为什么Linux是STM32的延长

linux说是STM32的延长,其实是从技术的角度出发。

也就是说,从技术连续性、技术难度、技术推广方向的角度来看,掌握STM32后再推广linux是非常合适的。

例如,在c语言中,STM32的c语言特性和难易度比linux低。

因此,lcdlr在熟悉STM32的过程中一定程度上掌握了c语言之后,再学习嵌入式l

inux,读linux源码时,就会发现自己的C语言功底得到了升华。

而你读惯了linux内核源码后,再回过头来看STM32的标准库,HAL库时,就会感觉简单了很多。

从软件层次来讲也是这样。

比STM32更简单的单片机,譬如51单片机,基本不使用库函数,都是程序员自己从零开始编程的。

51单片机的厂商一般也不会给你提供单片机的固件库,主要是太简单没必要。

而STM32就需要固件库,不管是早期的标准库还是现在的HAL库,都是芯片厂商提供的固件库,来辅助程序员来进行开发。

到了嵌入式linux阶段,分层就更复杂了。

和硬件相关的代码部分成了linux的驱动层,板载硬件管理由linux内核组建接管,客户业务功能则由linux应用程序来完成。

如果需要网络,GUI等功能,也都有非常专业的内核层和应用层资源移植对接。

所以说,从技术角度讲,嵌入式linux是完全覆盖了STM32的。

07嵌入式Linux的优势

其实学习linux还有很多优势。

Linux内核可以说是整个开源软件社区的集大成者,在过去几十年间有大量世界级优质程序员向linux kernel贡献代码和思想,也有大量的第三方开源项目基于linux的某些组件或linux的设计思想来构建。

譬如国内现在很火的国产物联网操作系统rt-thread,你去读它的源码就会发现,这完全就是linux的味儿啊。你去看华为的物联网操作系统LiteOS,他的源码中各个组件之间分隔对接的osal设计,也是linux kernel中大量使用的技巧。

所以说为什么要学linux?

因为它真的可以让你一劳永逸的解决往后职业生涯中遇到的大部分技术需求。

我们学习技术有个很大问题就是:你今天永远不知道明天会做什么工作,会需要什么技能。

可能你下个月开个新项目新任务,老大就会给你一个你根本没听过名字的东西让你玩。你怎么才能快速上手呢?

我的经验,最靠谱的就是学好linux。因为你会发现你遇到的任何东西都有linux的影子。

只要你学好了linux,有这个功底,你学习任何新东西时都会很快。

我当年下决心学好linux就是因为分配到一个指纹锁研发的项目,用到的方案是一个新加坡科技公司开发的,他的开发环境是用cygwin,而我此前从未接触过。折腾了半天搭建好环境我一看,这不就是linux的命令行嘛。还好我之前接触过简单的linux命令行,一下子感觉这个项目就不难了。

此后我就认识到linux的重要性了,下功夫好好学了linux,这么多年过来,太多事实案例证明,当时的决策非常英明。

08不要限制自己

最后说一句,永远不要人为给自己设限,不要自己局限自己。

人要脚踏实地,不要好高骛远,这个没错。

学51,学STM32这都没错,很实际,很接地气。

如果你用尽了全力也就能凑合学好这些,那就做单片机开发,也能找到工作。

但是如果你还有余力,还愿意继续下苦功学习,那么不要限制自己,继续向更高层次进发,永攀技术lydxtz。

要相信社会不会亏待你,会用升职加薪来回馈你。

更多干货内容只需要你关注电子芯吧客微信公众号

声明:本文系网络转载,版权归原作者所有。

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26549.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。