页次: 1
在信息发达的时代教学文档和视频在网络上遍地开花,因此没有必要重复造轮子,此文档的作用为:提供一个学习方法、例举出一些有学习意义的学习视频和文档,供0基础的你参考和学习。此处的学习可能有助于提升对于嵌入式整体的兴趣和概念的了解。
在例举学习的视频和文档之前我希望你能了解:
自学能力是步入任何一个行业首先需要培养的一种能力。学习一个东西必须的成本是时间,如何花少量的时间学习更多的内容一直是许多人的追求,其实很多人的学习方式有很大问题——时间浪费。浪费与否的评判取决于学习的目的,如果目的是快速实现某一个功能,那其实学习成本远远低于完全弄懂一个功能的时间。原因就在于快速实现某功能并不需要了解底层原理,而往往底层原理是最难啃的部分,适当的舍弃这一部分可以极大的提升我们的学习速度。
学习一门全新的未知领域的学科时切忌不要一开始就找来一本书或一个教学视频从头到尾就开始看,这是错误的,也是危险的!一个推荐的学习方式是先了解整个领域是具体干什么的?先从大纲开始,即整个领域包含哪些部分?各部分之间的作用是什么?如何使用这些部分?稍作了解有一些概念即可。先是粗线条的学习,全部过一遍,知道怎么用就行了,不用详细了解底层的计算原理、数学公式、逻辑运算等复杂的内容。后面基本的框架有了一定的认识了以后再进行更加详细的学习。
然后,开始学习每个部分的具体内容,此处仍然采用”稍作了解“战术,即知道概念、基本原理和如何使用即可。比如我知道计算器可以用来做运算,我现在在学习加法运算,我只是使用它进行我的加法运算,知道按下按键‘1’ ‘+’ ‘1’和’=‘就行了,不需要了解它内部的芯片逻辑如何运作,更不需要了解它内部的电子是如何运动的。这样有助于提高我们的学习速度和对学习领域的框架的快速搭建(万物皆可速通 bushi),好比高屋建瓴,有了框架的支撑再去慢慢的填空即可!
自学能力还有一部分为自主探索能力,要能够通过一个点的探索发展成为一个面的探索,比如学习stm32你不能说你只知道stm32不知道其他的单片机,你不能只知道单片机而不知到嵌入式,你不能只知道嵌入式而不知道其内部还包含着哪些部分。自主探索尤为重要!!这也是后期支撑兴趣的动力之源,自己不断发现新的有意思的东西不断的学习和更新!更高,更强!
一些概念的介绍举例
对于单片机是什么 ?一个肤浅且比较快速的理解方式就是一个性能不那么好但是可以对它进行编程的小型电脑。具体详细的细节可以参考网络上的详细说明。稍作了解有一个概念即可。同理我介绍下面的一些概念:
编程是什么?编程是编辑程序的意思,用计算机语言的方式进行编程,简称写代码(一下子就不高级了hhh)。
程序,是由逻辑代码组成的。
计算机语言是什么?计算机语言就是计算机能够理解的说话方式,用计算机语言书写逻辑的过程叫做写代码,有需要使用到一些方便的具有多种功能的文本编辑器,常见的几种计算机语言为C语言、C++、python、java等等我们操纵单片机使用的最多的是C语言,请自行搜索c语言学习内容。这些语言仍然不是计算机能够直接理解的,它们需要通过一些方式转化为更为底层的电平变化来理解。
电平是什么?电平可以肤浅的理解为电压的高低,电压高低只有两种方式,高和低。我们规定高代表1低代表0,一共只有两种,这也是计算机为什么是2进制的一个原因。
二进制是什么,类比一下十进制满十进一,二进制则是满二进一。
r 体验AI代码助手 代码解读复制代码平时对stm32进行编程时,往往需要借助一些软件和硬件来辅助我们完成编程,比如编程时需要使用一个叫stlink的硬件将电脑与stm32进行连接以便于后续逻辑代码的写入,该硬件需要安装驱动。我们需要使用一个名叫keil5的软件来进行程序的编写,该软件需要安装对应芯片的c语言包,编程使用的语言为c语言。这个软件需要进行一些配置,如果我们的代码逻辑书写完毕,需要对代码进行编译(修改成单片机看的懂的二进制文件.hex),并且进行烧录。烧录即抹去单片机上现有的程序并把刚刚编译好的二进制文件传到单片机里。它下一次上电时就会自动运行你写的逻辑。
这里引出2.0版本的学习方法——“不完全追问法”,上面的概念介绍就是一个例子你会发现我的概念介绍是一层套一层的,下面一层都是源自与对上面一层的不理解,但是解释到非常细节的地方时能要求进行概括即可。即”不完全追问“,就像武林高手过招,咱点到为止。
stm32的c语言库主要分三种,一种为库函数,一种为hal库,一种为寄存器。其各自的优势可以网上按照前面的方法自行了解,实验室所采用的是库函数版本,为hal库版本。建议先看完正点原子的库函数对于配置有了一些基本的认识之后再进行hal库的学习。
我相信有多自学者也有同样的经历,因为嵌入式开发涉及的知识体系太庞大了。
如果你去找答案,很难找到一个靠谱的,我看过很多类似文章。
比如说要学c语言、c++、java、单片机、ARM、Linux、数电模电等等。
当你看到其中一个要学习的内容以后,我相信你已经有打退堂鼓的计划了。
随便一个都够你学1个月以上了,全部学的话,这么算下来,顺利的话1年可能差不多,长的话2年也很正常。
在这信息爆炸的网络时代,有利有弊,你要什么教程都能找到,但选择多了你往往也无从下手。
试问一个入门级的新手哪有辨别哪个教程更靠谱的能力对吧?
其实想要比较高效地学习嵌入式,前期的定位是非常重要的。
嵌入式开发细分很多方向,我们第一步要做的就是选择方向,就像我们当初选择专业一样。
俗话说选择不对,努力加倍,这句话在这里一样适用。
一般一个产品公司会配备硬件工程师和嵌入式软件工程师。
那嵌入式软件工程师还分为以下几个方向。
嵌入式分为以下几个主流方向:
1.单片机开发
2.ARM+Linxu开发
3.FPGA开发
我当初是从单片机入门进入嵌入式开发,目前已经从事了10年研发工作了。
所以针对我最熟悉的单片机开发来讲解下。
相信很多人也看过关于单片机这个行业的负面文章,比如说很多人喷这个行业工资低,屁事又多,软硬件都要会。
我们来看看实际情况,直接在招聘平台上搜单片机工程师看看待遇如何。
我相信这个待遇应该没有拖后腿吧?
所以不要听风就是雨,要懂得自己通过数据去评估真实性。
Ok,假设现在我们定位好我们的方向就是单片机开发。
那我们再去分析,这个方向需要学习哪些东西。
最好的方法还是看职位的需求,那下面结合我从业10年的经验,为大家总结下。
一、基础篇
1.c语言
单片机支持c语言和汇编去编写程序,汇编基本很少用了,主要学习c语言。
单片机c语言和上位机的c语言还是有点差别的,市面上目前大多数都是上位机c语言的教程。
我们无际单片机编程前段时间为学员录制了针对单片机的c语言入门教程,需要的可以去小破站看。
2.硬件基础
单片机开发主要是写程序控制硬件,所以硬件基础必须得掌握。
很多人就是在这个环节走了弯路,其实对于软件开发来说,只要能看懂原理图就行了,不用具备设计的能力。
前面也说了,硬件一般由硬件工程师负责,你不要去做抢别人饭碗的缺德事。
3.单片机
有了c语言和硬件基础以后,就开始学习单片机,前期我还是建议从51单片机开始学习。
这个时候就需要去购买一个开发板,一遍学一遍动手操作。
二、进阶篇
当你学完基础篇的内容,你会发现自己还是不会通过单片机开发产品,这是正常的现象,不用过于焦虑。
想要达到独立做项目就得不断做项目磨练,别无捷径。
至于做项目,可以找无际单片机编程带,也可以自行到某宝购买DIY的项目套件。
不过,我建议最好还是找个资深的人带,这样你才能学到实际产品开发的东西。
市面上不管开发板也好,DIY的项目也好,跟实际产品相差甚远,代码也是以实现功能为主,并没有太大的参考价值,只适合新人练手。
我不是电子专业毕业,后面是通过自学的单片机进入了这个行业。
当初我和很多人一样,不知道单片机是什么。
网上搜集了一些资料,说的太学术化,看的云里雾里。
今天我用大白话来给大家讲解一下。
单片机是我在自学java,然后在网上找教程无意间看到有这门技术存在。
当时一下就提起了我的兴趣。
因为单片机编程比java这些有趣多了,它能程序来控制硬件完成自己想要的行为,比如开灯、关灯。
最后也促使我放弃学习java而转向单片机编程领域。
下面我从3个方面来详细介绍下。
1.单片机是什么?
2.单片机能做什么?
3.单片机编程怎么入门?
一、单片机是什么?
单片机是一个可编程芯片,类似于电脑的CPU,只不过性能、成本、功耗都比cpu要低很多。
那我们通过编写汇编或者C语言程序,下载到基于单片机设计的电路板里面,就能完成相应的产品功能。
比如说打开/关闭灯、温湿度监控、自动加热制冷等功能。
具体功能呢是根据电路的设计和程序设计来区分的,不同的产品电路和程序都不一样。
二、单片机能做什么?
小到家用电器,大到飞机火箭,都有单片机的应用。
给大家举几个例子,比如说:
1.带电压电流显示充电器
2.电动车充电桩
3.大家骑的共享单车
4.空调、冰箱、电饭煲、电磁炉、消毒柜等等。
太多太多了,简单来说凡是有电路板,带智能控制的都可以用单片机来实现。
三、单片机编程怎么入门?
关于单片机编程怎么入门我历史文章里有写,每个环节学到什么程度,都写的很清楚,包含了全部教程和工具。
这里就只给大家大概介绍一下。
单片机编程入门有3个必备知识点:
1.基础电路
2.C语言
3.单片机
1.基础电路
要熟悉常用的电子元器件、比如电阻电容、二极管、三极管等原理,熟悉串联并联电路原理等等。
2.C语言
前期通常只需要学习常用的一些数据类型和条件语句就可以了,像指针这种可以后期在项目中慢慢沉淀。
2.单片机
入门建议先学51,再学STM32。
学习51是为了让大家对单片机有一个系统的认识,而学STM32是因为市场的需求很大,有助于以后找工作。
我嵌入式单片机开发10年了,刚开始主要走软件路线,后面熟悉了基本上软硬件都做。
我们在设计电路板的时候经常会跟一些做外壳,做机械的兄弟打交道。
工作之余,我们也会扯扯其他私事,各自吐槽下自己的行业。
他们总是跟我说,真羡慕我们这些读了书的人,出来能做的东西也高端一点。
我也很坦诚跟他们说,其实我在学校主要学的电梯专业,是刚毕业的时候我自学转行到单片机开发的。
这个行业在外行人看来好像门槛很高,其实初中文凭都能学会,我曾经了几个产线的徒弟,都是初中文凭,后面照样转正做开发了。
很多人之所以有这种想法,是因为被很多网友误导了,我也看过很多类似的文章和评论,基本可以断定是行外人,要么就是行内人怕竞争,说很多学术化的知识来吓唬入门者。
我就是一个活生生的例子,我学历也不高,也不算聪明,当初就是执行力好点,去做了而已。
那个时候我也是误打误撞进入这个行业的,刚开始我本来计划转纯软件的,因为程序员工资普遍比较高。
我接触的第一门编程语言也不是c语言,而是java。
在网上下载了教程,大概自学了1个多月,还买了一本很厚很厚的书看,中途又因为语言需要学习了mysql之类的数据库,学完以后发现脱离了教程还是什么都不会。
当时急着找工作,我想java学习周期太漫长了,也没人指导,不知道学到什么程度能出去找工作。
然后我就放弃java了,但是我还是想从事关于程序这块的开发,然后就找到了嵌入式这个行业。
我在网上搜了下这块要学哪些东西,也被无情打击了,什么ARM,Linux,数据结构,C语言,C++等等。
如果你按照这种知识体系去学习,那一辈子也学不完学不会。
嵌入式其实也是分方向的,主流的有单片机开发和ARM+Liunx方向。
目前市面上单片机开发的产品量比较大,铺天盖地的,ARM+Linux主要针对高端产品,它们之间应用的场景是不一样的。
很多人就是还没搞清楚这些方向,然后盲目去学习,本来是想做单片机开发的,又跑去学Linux,这当然不可能学得会,因为光单片机的东西就够你学一辈子了。
很多人说单片机简单,没前途,工资低,一般这种人基本上都是混得不好上来抱怨的。
真正资深的工程师绝对不会把眼光局限在单片机这个芯片上,单片机只是工具,怎么用好这个工具才是决定你收入的关键。
即便你是去打工,这个职位的工资也不低。
当然,这些谁说了都不算,大家可以自己到招聘平台搜单片机工程师和嵌入式工程师这两个职位看看工资待遇最真实。
我认为至少对得起你的付出,毕竟按照正确学习路径的话,像我们无际单片机编程的学员一个月就能上手开发51的项目了。
几个月学习下来,只要把我们程序架构吃透,就是2-4年经验工程师的水平。
所以,这个投产比还是很高的,如果是机械或者其他行业转嵌入式开发的话,我认为单片机方向是最好的切入点,熬个4,5个月就能出来找工作。
在一线的话做个半年左右月薪过万我认为还是很简单的,10年前我第一份工作工资1.8k,半年后5k。
这是10年前,现在出来一线城市的话都说6-8K,半年直接翻倍,这个行业就是起点低,但是成长很快,然后普通工程师的天花板大概在23-35K之间。
页次: 1