初学者如何快速上手单片机
(此处已添加圈子卡片,请到今日头条客户端查看)单片机的学习者有初入职场的菜鸟工程师,有渴求知识的在校大学生,也有迫于项目需求的电子工程师。迫于项目需求转换开发平台的电子工程师往往具备其他类型单片机的使用经验,学习新类型的单片机并不会有太大的障碍,但是菜鸟工程师和在校大学生就是真正的“初学者”。初学者在开始学习单片机的时候都有一个相同的问题那就是“怎么才能尽快地学会使用单片机?”
菜鸟工程师由于身边有“老兵”的指导,加之有目的明确的工程项目的驱动,在单片机学习上并不会走太多的弯路。在校大学生在学习之初,首先要面对的就是“迷茫”,空有一腔热情,却不知如何下手。
在学习单片机之初应当有一些基础知识准备。单片机是电子技术发展到一定程度才出现的产物,本身就是众多电子技术的结晶,对其中一些知识的了解是学习单片机所必需的,所以网络上经常出现的“零基础”学习单片机是不客观的说法。在学习单片机之初,应该具备基础的电路知识,主要包括基本的数字电路和模拟电路知识。比如,在学习单片机的I/O口时,就会涉及数字电路知识中I/O口电平、施密特触发器等内容;在学习单片机的ADC通道时肯定会涉及信号带宽等模拟电路方面的内容。在学习单片机之前不苛求必须有深厚的电路功底,但是常识性的电路知识是不可或缺的。
学习单片机的很大一部分工作是学习单片机的编程,简单地讲就是编写代码控制单片机的工作流程。目前,绝大部分的单片机开发工具都能够支持C语言,并作为单片机的开发语言,也有人推崇使用汇编语言作为单片机的开发语言。不可否认使用汇编语言可以获得更高的执行效率和代码密度,但是汇编语言在开发效率和代码的可读性上比C语言要差。事实上,C语言编译器效率已经提高到了相当高的水平了,C语言编写的代码编译后在执行效率和代码密度上跟汇编语言相比并没有太大的差距,C语言早就成为单片机开发的绝对主力。所以初学者掌握基本的C语言知识即可,无须在开发语言的抉择上花费太多的时间。
准备的最后一点就是学会使用最基本的实验设备,这里列举一般的实验室都能提供的4种设备:万用表、稳压电源、示波器和信号发生器。这些设备的熟练使用将对学习中遇到的调试(bebug)有非常大的帮助。
有了以上的准备,就可以正式开始单片机的学习了。初学者最好选用一款性能稳定,范例丰富并且推广较好的单片机作为学习目标。性能稳定,避免在学习过程中遇到由于芯片本身的设计失当导致的一些无法解决的问题;范例丰富,大量的示例供用户阅读和借鉴,更容易理解单片机的操作机理;推广较好,意味着学习的受众面较广,有很好的学习氛围和学习资料,并且有容易获得的学习开发板。从这3点出发,MSP430系列单片机就是一个很好的选择。
首先,该单片机目前在电子行业已经使用多年,一直都作为低功耗单片机的标杆产品;其次,该单片机所有的型号都具备官方范例代码,而且有较多的参考案例;最后,MSP430单片机在中国通过大学计划推广了多年,大量的大学生使用这款单片机完成实验、参加竞赛,积累了很多的书籍教材和网络资料,开发板类型也很丰富,TI提供售价约为几十元人民币的LaunchPad开发板。单片机都有相似性,学会使用一款单片机,再过渡到另一款就不太困难了。
学习单片机可以从学习单片机的开发环境开始,当前的单片机都有自己对应的集成开发环境(IDE,Integrated Development Environment),并有免费版本供初学者下载使用。集成开发环境可以完成代码的编辑、编译和调试过程,使用起来比较方便。TI推出的CCS5还可以完成MSP430单片机的图形化配置。对于初学者,集成开发环境的基本使用没有障碍,但是特别要注意的是开发环境中对应的开发工程的属性配置。
熟悉开发环境的开发流程后,就可按照引导教材或者用户手册,逐一了解单片机的各功能模块的特性并完成对应的功能模块的实验操作。逐个模块熟悉下来,基本上一款单片机即可学会使用。这样一个流程下来,能够掌握单片机的基本操作。希望熟练掌握则需要进一步通过完成更为复杂的实验或者项目来锻炼。
前面的介绍中也强调了实验的重要性,实际上大多数学习单片机的初学者都会陷入一个误区,过度的重视实验,把绝大部分精力放在调试上,却忽视了单片机使用原理的学习。这种情况在大学生身上非常明显,很多情况下还没有能够理解单片机功能模块或者外设的使用原理和方法,就急切的展开实验。大多数情况下,编写的代码还存在缺陷甚至错误,无法达到预期的效果,就进入到了无尽的盲目修改和调试中。最典型的情况就是刚开始接触一个外设,连工作方式和寄存器的功能还没有弄清楚,就开始粘贴示例代码,并编译下载。反复调试不能成功,心态就开始变的浮躁,进而厌恶单片机。
如果一直调试未果,学习热情被消耗殆尽,对单片机的使用产生恐惧感,最终就会放弃单片机的学习。细究这种情况的原因,其实就是急功近利的心态在作祟。初学者都急切的希望自己的代码可以跑起来,所以重心就从“学”偏移到了单纯的“做”上。这种心态我要特别提出来,希望能够告诫初学者必须保持平稳的心态,先仔细地浏览教材或者用户手册,理解工作原理,之后再调试代码完成实验。
单片机学习过程中每个人都会遇到各种各样的难题并且遭遇长时间的调试过程。遭遇到这样的情况,就需要冷静下来查找问题成因。一方面,可以借助于网络,查找是否有相似的问题并借鉴其他人的分析及解决方案,这是一个比较直接高效的方法;另一方面,反复地查阅单片机的数据手册或者用户手册,逐个分析列举可能的原理,并设置对应的测试来解决,一些“莫名其妙”的问题,往往需要通过这样的手段来解决。
当然,能够获得有使用经验的老师或工程师的指导则是最直接、最有效的方法。随着单片机学习以及使用的深入,遇到的问题将越来越复杂化,这时候外界因为缺乏对此项目的深入了解,所能起到的协助作用就会减弱,这个时候独立的定位问题以及解决问题的能力就必须具备。所以在学习的整个过程中,都应该有意识地培养这种能力。
当熟悉单片机的使用之后,就应该完成一个视野转换的过程。这个时候关注范围则应该由单片机扩展到整个单片机系统上,不仅仅关心单片机上代码的实现,还需要考虑如何构建以单片机为核心的电子系统。单片机工程师一般会对一个或者若干个类型的单片机非常熟悉。
在得到工程项目需求时,能够快速地评估系统所需要的单片机控制核心,在满足需求的前提下一般会尽量采用最熟悉的单片机,合理设计划分系统电路功能模块,尽可能高效利用单片机片上的外设,以达到最优化的设计。如果评估发现使用的单片机不合适,则还需要更换单片机平台。在工业应用上,还必须考虑单片机系统所需要面对的严苛工作环境,保证系统能够顺利通过相应工业标准的测试。最终完成由点到面的扩展,逐步朝单片机工程师方向迈进。
(此处已添加圈子卡片,请到今日头条客户端查看)如何入门单片机开发?
前言
作为一个嵌入式老司机,多年来跟单片机、Keil、C语言、AD、烙铁、风枪、示波器、电子元器件纠缠不清。期间经历了不少磨练,熬过了很多夜晚,也掉了大把头发。
当初熬夜点亮了一个LED,像这样一个个小小成就感让我砥砺前行。
刚开始并不看好这个行业,事儿多工资少,需要不停地学习新知识。前几年熬夜焊板子,一边工作一边咒骂。
多年后,庆幸有这一技之长,让我能吃饱饭、开上车,有个家庭。
刚毕业就转行
当初是自学转行的,学的电梯专业,临近毕业20岁出头,精力旺盛没地方使,一块51开发板配一个视频教程,除了吃饭上厕所,寸步不离房间。
入门的时候,我和很多新手一样,不懂电路,不懂编程,不懂单片机,对单片机开发的任何一个环节都充满了问题。
好在学习能力还行,也有耐心,跟着视频一步一个脚印,看一个章节我就在开发板上试验一下。
很快我就能从点灯到做一个电子时钟了,其实单片机编程比纯软件要简单很多,代码量也少很多,所以还挺好学的,只要你的学习路径正确。干这行如果没有兴趣加持,还是挺难受的。
个人定位,从事软件还是硬件?
一般实际工作开发一款产品的时候,绝对不可能一个人从头到尾把产品做了。一般有的人负责硬件部分、有的人负责软件部分,这也是单片机开发的两大方向。
入行单片机开发,技能要有所倾向,将来要做硬件工程师还是软件工程师?
为什么要有软硬件之分呢?实际上大厂都是分工精细的,这样使工作内容流程化、简单化,提高工作效率,开发流程。另外也提高了公司业务的稳定性,即使有人突然离职也不会造成太大影响。
有些产品光程序这块就够你折腾一个月了,如果你又做外壳设计,又做硬件设计,又做软件。等产品出来的时候,客户可能都不在了。
所以,一个产品,最低配也是一个硬件工程师和一个软件工程师。
一个全能的人,除非在行业深耕很多年,不然很难所有东西都学精,所以大多数都是只懂皮毛,能把东西做出来,但很难优化到专业的水平。
看完上面你是否已经知道,不管你想从事任何行业,首先定位是非常重要的。
在定位之前你必须要去了解这个行业的现状,有哪些职位?
那单片机开发的职业定位有硬件工程师和单片机软件工程师。
凡是我的徒弟,我都会建议他们从单片机软件开始,性价比最高!大家去招聘平台搜一下工资待遇就知道了。
当然硬件做好了,收入分分钟秒杀软件,但硬件做好还是很难的,至少不是你看视频和看书能做好的,而是要遭受无数实际产品的毒打。
而且现在电路集成化都很高了,新手从事硬件很难接触到核心的技术。
还不如先从软件开始,工资也高,反正做单片机开发,即便你做软件,也是天天在调硬件,调多了,你也就懂了。
搞硬件就不一样了,一般很难接触到程序上的东西,即便接触构不成体系。
学习内容
有了清晰的定位以后,我们接下来就要根据这个定位去制定我们系统的学习路径。制定学习路径的目的有2个:
避免走弯路
规划好时间,鞭策你执行
结合我的经验直接给大家总结从事单片机开发最重要的几个关键字:
C51单片机/STM32单片机
C语言
能看懂原理图
基本焊接能力
下面说一下为什么很多人在开发板上把每个外设例程都学完了,但是还是感觉自己啥都不会?
你缺乏的是一定的产品思维,就是实现一个功能的思路。要解决这个问题就是做项目,没有别的捷径。
老话说行百里者半九十,单片机外设、C语言、电路原理、焊接能力,实际上这些只是为上手项目做铺垫。
单片机外设的学习相对简单,买一个开发板,把每个外设的例程跑几遍之后心里就有个大致了解。把单片机的每个外设的实际应用场景你都亲手写一遍,下次你再碰到同样的功能需求时就知道怎么去解决了。
声明: 本文转载自网络,如涉及作品内容、版权和其它问题,请于联系工作人员,我们将在第一时间和您对接删除处理!
相关问答
单片机 的 编程 ?单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的...
单片机 c语言 编程入门 基础知识?单片机C语言编程入门基础知识包括:-了解单片机的基本结构和工作原理。-掌握C语言的基本语法和结构。-熟悉单片机常用的外设接口和功能。-掌握单片机...
单片机 是怎样 编程 的?单片机编程是将计算机指令转换为可执行的二进制代码,并将其储存在单片机中,以便控制硬件执行任务。编程的过程包括选择编程语言、编写代码、编译代码以生成可...
单片机 系统的开发步骤是什么?1先根据需求设计最基本的硬件电路图,(检查无误后)2按最基本的硬件电路图,使用面包板,电子元件,搭建实际电路。3按需求编写单片机的软件,可以使用仿真...1...
初学者,学会 单片机编程 ,需要多久时间,之后能做什么工作?看你基础知识和学到什么程度,如果懂得数字和模拟电子技术,再会C语言的话,10天差不多就入门了,如果基础不好,需半月到20天,但想熟练掌握编程和外围器件应用,那...
为什么自己设计不出来 单片机 程序?该怎么做?设计编写单片机程序是一个渐进的过程不可一蹴而就,毕竟单片机程序是与硬件有密切关系的,我们一般称为单片机程序叫底层硬件驱动程序。编写程序不但要对软件要熟...
51 单片机 的编写程序是什么?答51单片机的编写程序一般指的是单片机的编程语言有三种种:机器语言、汇编语言与高级语言。机器语言是计算机能够看懂的语言。(形式为一段二进制代码).汇编语...
无任何编程基础的人,该怎么 入门编程 ?从业编程10余年,这个问题我来说下我的看法,说的不对各位看官全当笑话。1、入门编程的先决条件我觉得先决条件不是基础,而是你为什么要学习编程?大部分朋友...
搜集最齐最全的国产 单片机 ,你会用国产的吗?STC单片机是做得最好的国产单片机,是比较成功的,现在占有国内51单片机的大部分市场了。我当然也是最先使用STC单片机,用来开发产品,成本低,性能很强。也是...
没有任何C语言基础,如何学好 单片机 ?这个问题就像是问:我不会用刀,怎么切好生鱼片?C语言是单片机开发的工具,是必须要掌握的。当然工具不只一种,汇编也是可以的。想学好单片机,计算机语言工具...