10年前自学转行的感悟——嵌入式单片机软件开发

当时,从电气专业转行到嵌入式单片机软件开发,最终找到工作花了4个多月。无际单片机编程有一套针对单片机c语言编程的教程,结合了工作当中最常用到的语法,节约大家学习时间。

另外,学习过程中也会出现一些突发情况,比如遇到问题时走未知的弯路、无人指导等。

我觉得自学技术是对抗人性弱点的游戏。 无聊、焦虑、迷茫、无助,都是自学中必须经历的怪物和怪癖。

能否获得西经,更多的是考验你的勇气和毅力。 即使绕了可以绕地球一圈的弯路,最终还是能到达目的地。

如果您了解这一点并且仍然想尝试,请继续阅读。 否则,不要轻易尝试。 如果半途而废,还不如不要开始。

以上是我10年前对自学和转行的反思。

当时我从电气专业转到嵌入式单片机软件开发,花了4个多月才终于找到工作。

虽然现在门槛不同,但方法可以通用。

说到嵌入式开发,大多数人想到的是ARM、Linux、STM32。

这个太宽泛了,嵌入式开发涵盖的知识体系太庞大了。 工作了10年,我仍然感觉自己只是嵌入式开发知识海洋中的一针。

但这并不意味着你需要花一年甚至几年的时间来学习。

只要有明确的定位,正确的学习路径,再加上一点坚持,3-5个月就可以从零开始就业。

找工作的首要目标首先是一个成年人应该具备的意识。 进入行业后,会有薪资支持,同时可以在工作中进一步深造,从而形成良性循环。

不要一开始就试图成为专家,因为你可能会饿死。

1、定位

嵌入式开发分为很多方向。 从总体上看,分为嵌入式硬件开发和嵌入式软件开发。

嵌入式硬件开发

主要负责产品电路设计、PCB布局、样品焊接调试以及后期生产跟进。

说到学习硬件,我个人感觉性价比比较低。 主要有几个原因。

①. 硬件主要需要通过实物不断练习和学习。 对于不同的电路,你需要搭建不同的配套硬件来测试你的理论是否正确。

这就造成了比较大的成本,比如购买示波器、万用表、烙铁、焊锡、面包板、元件等。

而且,并不是每个人都有这样的学习环境。 在睡觉的小房间里进行焊接并不是一件好事。

②. 目前具有实际产品参考意义的硬件教程很少。 大部分都是几年甚至十几年前的旧教科书,不再使用了。

③. 大多数普通硬件工程师职位的薪资低于嵌入式软件工程师。

④. 现在电路集成度很高,往往采用芯片方案来解决。 一般公司很难获得核心技术,总是用别人现成的电路。

经过几年的一般软件开发后,您可以设计自己的电路。

⑤. 硬件复制的成本较低。 几千元就可以完全复制你的硬件电路。 软件复制难度较大,成本较高。

所以我一直强调,如果想走全栈,先学软件,然后再专门学硬件。

2.嵌入式软件开发

嵌入式软件开发分为很多方向。 比如主流的有单片机开发、Linux驱动开发、Linux应用开发、Android应用开发、FPGA/DSP开发等。

两个大方向又细分为很多较小的方向。 每个方向就是一个岗位,每个方向都需要不同的学习内容体系。

如果不理解这个定位,你就会认为嵌入式开发很难。 你得学硬件、STM32、ARM、Linux。 需要数年甚至数月才能完成。

2、根据定位规划学习路径

一开始,我对文凭和非专业的自卑感,让我选择了更容易上手的单片机开发方向。

工作时间越长,我越发现单片机开发并不像大家想象的那么简单。

相反,Linux方向的很多开发都有现成的库可以调用,而大多数单片机开发都是从控制芯片引脚开始的。

还有一些协议栈,比如蓝牙协议栈、Zigbee协议栈等,也会考验你的编程能力。

这些协议栈有很多值得学习的地方。 您可以完全将它们裁剪、移植、改编和优化为您自己的程序架构,以便在您自己的产品中使用。

现成的系统,无论是实时操作系统还是Linux,都必须满足通用性、可移植性等严格要求,因此一般会占用微控制器和处理器资源。

编写自己的架构是不同的。 您完全可以根据自己的产品进行定制,既保证了系统的优势,又最大限度地减少了芯片资源的浪费。

这比直接使用所谓的RTOS和操作系统要高得多。

下面,针对我最熟悉的单片机发展方向,并根据目前这个职位的市场需求,系统地讲解一下这个方向的学习路径。

C语言基础

微控制器支持C语言和汇编语言编写程序。 目前主流使用C语言。 主要用于小家电和消费品的组装。 你可能10年都用不到了,所以你主要学C语言。

关于这个主题的教程也很多,但是针对微控制器的C语言并不多。 其中大多数是基于纯软件的。

虽然都是C语言,但其实还是有区别的,比如寄存器配置。

无极单片机编程有一套单片机C语言编程教程,结合了工作中最常用的语法,节省大家的学习时间。

该教程也是完全开源的。 可以去小坡站找到无极单片机编程直接观看。

2. 电路基础知识

此链接中最常见的陷阱是坚持使用模拟电子产品。 我也经历过这个陷阱。 当我学三极管放大的时候,就开始各种数学公式,再也学不下去了。

我也因为这个差点放弃了。 工作了半天,发现书本教程里的数学公式并不适用。 三极管最实际的应用就是开关功能。

如果是NPN型三极管,只需记住B极电压比E极电压大0.7V以上,三极管就能导通。

不同型号的晶体管不一定在0.7V下导通,有的可能更小。 但实际电路设计需要晶体管导通时,一般E极接地,B极由单片机引脚控制,电压会远大于0.7V。

就是这种细节上的差异。 如果专注于三极管截止、放大、饱和,学习效率会慢几倍。

3、51单片机

很多人说51单片机已经过时了,没有必要学。 这纯粹是外行人的胡说八道。

微控制器越原创,就越能接触到底层开发。 51单片机让您了解单片机的底层原理以及如何配置和使用芯片资源。

STM32微控制器虽然很流行,但它们都是封装好的库。 它们可以用于更多的应用,并且一般不需要配置寄存器。

这样你永远无法知道单片机的原理。

这个阶段你必须配备开发板或者通过项目来学习。

微控制器是一种有利于硬件控制的技术,与仅需要计算机的纯软件不同。

建议新手从STC89C52RC单片机入手。 目前市面上很多开发板也是采用该芯片制作的。 编程工具便宜,资料和教程丰富。

4. 51单片机项目

这个阶段是最重要的,可以说比后面学习STM32还重要。

如果你熟练使用STM32,你可能还不如用51单片机做过2-3个项目的人。

微控制器只是一个工具。 如何通过我们自己的天马行空的想象力,把这个工具变成一个实用的产品,是我们的最终目标。

这个阶段是检验你之前学习成果的时候。 一开始会相当痛苦,因为你脑子里没有想法,有想法也不知道如何用代码来实现。

最好的办法就是先研究别人做过的项目,看看别人的功能思路是什么,代码是怎么写的。

最后根据自己的想法再写一遍。 写完之后,分析一下自己的代码和别人的代码的优缺点。

这个过程很痛苦,不要想捷径。

5.高级C语言

大多数51单片机程序都比较简单,不使用C语言的高级语法指针和结构体仍然可以实现功能。

但这些高级C语言语法的使用就显得尤为重要。 可以说,如果不了解指针和结构体的基础知识,就永远停留在初级水平。

STM32微控制器的固件库也大量使用了指针和结构体。

我们无极单片机编程也有比较完整的系统教程,其中包括枚举、指针、结构体、回调函数、队列算法、任务管理等非常有用的知识。

为您后续学习STM32和RTOS打下坚实的基础。 教程也是完全开源的,可以直接在小坡站上找到。

当然,如果你只是学习STM32,那么只需要学习指针和结构体即可。 如果你没有一定的项目经验,你可能看不懂里面的很多知识点。

6.STM32微控制器

我通过项目学习了STM32单片机。 当时,该公司有一款新产品,想要取代原来的NXP产品。 价格太贵了。

在实际项目的驱动下,你的学习会更有针对性、更有效率。

当然,通过开发板来学习也是可以的。 您无需学习所有外围资源。 你只需要学习最常用的就可以了。 如果后续工作需要的话,有针对性地进一步了解也很简单。

具体需要学习的外设,可以参考我上面的思维导图。

7.STM32项目

至此,你已经入门了,剩下的重点就是提高你的编程思维和水平了。

虽然对于我们自学又省钱来说是很理想的……

但我建议最快的方法是找一个大师来领导一个项目。 一个项目可能需要你几年的自学时间。

我并没有夸大其词的意思,因为我已经这样做了10年了。 其实最大的进步只是在接触master代码的那2、3年。

但当时他已经辞职了,完全靠自己了。 他花了好几年的时间才完全明白这一点。

如果实在不想花很多钱,可以去淘宝买一些项目套件自己DIY,比如无人机、追踪车等项目。

然而,这种项目只能让你熟练编程,而不能提高你的认知水平。 大多数都专注于实现功能。

在开发实际产品时,需要考虑程序的可扩展性、可移植性和执行效率。

不知不觉,我已经写了三千多字,全是原创、手写。 如果对您有帮助,请连续三连鼓励。

最后祝大家学业有成!

单片机

单片机制作中的显示原理是怎样的?单片机应用实验

2024-5-6 11:05:57

单片机

让我们快速实现树莓Technology的边缘计算PLC-3标准PLC

2024-5-6 12:08:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索