你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何学习单片机?

[复制链接]
gaosmile 发布时间:2020-6-21 14:41
第1章 如何学习单片机

    在错误的道路上日夜兼程,最终也无法成功,方法和思路绝对是第一重要的。一些学技术的同学,往往看到这类章节会直接跳过去,因为大多数类似章节都是废话连篇。但是,今天在这里我可以很负责任的告诉你,本章节讲到的学习单片机的方法,都是我们学习单片机的无数经验和教训总结出来的瑰宝。因为我们披荆斩棘,开辟了道路,所以可以告诉你路在何方;也因为我们摸过烧红的铁块,烫了手,所以也可以告诉你教训和代价是什么。希望各位都能站在我们的肩膀上,看得更远!

1.1 学什么单片机
   

    单片机的型号那么多,如何选取一款合适的进行学习?如果身边有比较现成的学习单片机的条件,有什么条件就学习什么型号。比如,你所在的公司刚好用到某个型号单片机,那么就方便多了。开发板不用购买,直接用公司现成的板子,指导老师到处是,公司的工程师,只要你耐心虚心的不耻上问,相信他们都愿意帮你解答问题。或者你跟着学习的导师,正在使用某个型号的单片机开发产品,那么同样的道理,你也会有得天独厚的优势,直接跟着学就行了。单片机型号虽然众多,看起来纷繁复杂,其实它们的基本原理、基本用法都是相通的,只要熟练掌握其中一种,其它的都可以触类旁通,快速上手了。
    如果你这些条件都没有,那就跟着我学吧,我建议你学习51单片机。为什么呢?虽然现在单片机种类和型号非常多,每个型号都有一定的市场份额,但是哪个型号也没有早期51单片机那般风光和火爆,虽然现在地位不是那么高了,但是因为51单片机积累的资料非常多,大家学起来就会拥有众多的参考资料,所以上手肯定比其他型号的要快一些。如果你学习稍微偏门的单片机,可能一个简单的软件问题就要折腾你好长时间,不仅仅浪费了你的学习时间,更重要的是打击了学习单片机的信心。
    那么是不是每种单片机我们都要学一遍呢?答案当然是否定的。大家跟着我来学习51单片机,必须得跟着学会举一反三和融会贯通的能力。单片机型号那么多,挨个学下来估计头发白了也学不完,所以大家跟着我学51单片机,不能仅仅当做51来学习,更重要的是要当做“单片机”来学,要通过我们的这个教程,把所有的单片机的内部资源都搞清楚弄明白,每个内部模块的用法理解透彻,这样当你遇到一个从没有用过的单片机,也就知道如何下手去使用它进行开发了。

1.2 如何学习单片机

    前边提到过,单片机是一门实用技术,我们学习它已经不是为了应付考试了,我给大家总结了单片机的学习方法是:一个要领,四个步骤。
学习单片机的要领就是:在实践中成长,In Doing We Learn!
学射箭,你得去拉弓,整天只摆造型肯定不行;学游泳,你得下水扑腾,整天在岸上做模仿活动不行;学开车,你得坐车上去开,坐沙发上肯定学不会。同样的道理,学单片机,整天盯着单片机书看肯定不行,你也必须得亲自动手去练。
    没有不下水就学会游泳成为游泳健将的,没有不到车上练就能成为赛车手的,这点大家都清楚,可为什么那么多人学单片机的时候,总是只抱着一本书看呢。第一,我们小学中学甚至大学的学习模式都是如此,学什么东西主要都是靠看书,应付书面考试;第二,很多人想实践却不太清楚该怎么去实践。
    遇到问题查下书比直接看书的效果要好过百倍。不是不让大家看书,而是看了一点以后,要马上去实践验证,然后再回头结合实践的结果,理解书上的内容。从这个地方,大家要得出一个结论来,就是在学实际技术的过程中,和应付考试不同,书上的内容不需要你去硬性记忆,书是用来查的,不是用来背的。
下面就是我总结的跟着我学习单片机的四个步骤。
第一步:鹦鹉学舌。
    刚出生的孩子叫“爸爸”“妈妈”的时候,他甚至不知道“爸爸”“妈妈”是什么意思,更不会理解这些声音是什么意思,但是我们带着孩子见到他爸爸就让他喊“爸爸”,见到妈妈就让他喊“妈妈”,见到爷爷就喊“爷爷”……慢慢的你会发现,次数多了,孩子就知道谁是爸爸,谁是妈妈,谁是爷爷,谁是奶奶了。
    大家刚开始接触单片机的时候,也属于单片机行业的新生儿。单片机的样子,单片机外围的各种器件,单片机内部的各种结构,单片机使用C语言的编程方法,初学者可能都没有见过,脑子里全无概念。没关系,有些概念和方法你不理解也没有关系,甚至不需要你去理解,你只需要跟着我去鹦鹉学舌式的学习,第一遍学习某一节课的内容时,对于程序,大家就可以完全跟着抄下来,甚至抄两三遍,过一段你会发现,好多东西你也认识了,好多概念你也慢慢的理解清楚了,你也能大概看懂别人的小程序了,切忌觉得自己看会了,而简单复制粘贴。
第二步:照葫芦画瓢。
    很多同学学习的时候喜欢看,看我做的视频,看我写的程序,甚至看别人的程序,都能看懂,觉得自己就会了,等到自己写程序的时候,感觉就是老鼠啃天,不知道从哪里下手了,这是初学者很容易犯的“眼高手低”的毛病,所以第二步的内容就非常重要了。
    我的要求是,每一位同学,在学完了当前课的内容,把第一步顺利完成以后,然后关掉视频教程,关掉源代码,自己通过看电路图和查找非源代码的其他任何资料,把当节课我写的程序代码重新默写出来,边写边多少理解那么一点点,不是纯粹的背诵,应该说是背诵加理解的结合体。甚至学过几节课以后,可以回头把前边曾经这样实现过的课程,再按照这种方法做一遍。千万不要认为这一步没必要,这一步是你能否真正学会单片机的一个关键,在学完本教程之前,每一课内容都要这样做,如果每一个程序你都能够完美的完成,那么可以说,当节课的内容,百分之七八十你已经掌握了。
第三步:他山之石,可以攻玉。
    单片机技术的最大特点就是可以通过修改程序来实现不同的功能,因此举一反三的能力就必不可少了。每一节课的例程后边,我一般都会布置几个作业,大家尽量去独立完成这个作业。在完成这个作业的过程中,都可以参考我的程序思路,在这个基础上通过动脑思考去构建你自己的程序框架,最终将程序完成。
    在我们工程师实际产品研发的时候,很多种情况下也是如此。比如一个产品,我们如果从零起步的话,可能会走很多弯路,遭遇很多前人已曾遭遇过的挫折,所以我们通常的做法是寻找购买几款同类产品,然后先研究他们的各自优缺点,学习他们的长处,然后在同类产品基础上再来设计我们自己的产品,这就是“他山之石,可以攻玉”。
    初学者在学习的时候,往往遇到的问题很多,你应该想到,你遇到的问题,可能前辈们早就遇到过了,所以遇到问题后,不要慌张,首先利用谷歌或者百度这些搜索引擎在网上搜一下,要做什么新东西,先去网上找相关资料了解一下,不管是编程还是硬件设计,多多参考别人的东西,只要把别人的东西分析明白了,自己用起来了,也就成为自己的知识了。
第四步:理论实践结合,温故知新。
    当大家把所有的课程都按照前边三步完成后,这个时候不妨再把书打开,再看看书,经过了自己的实战经历,再看书的时候,对很多知识点会有一种恍然大悟的感觉。甚至视频教程、书籍都可以反复看几遍,可能有的知识点当时学习的时候不明白,过了一段时间,回过头来再学习的时候,一下就明白了。

1.3 单片机学习的准备工作

第一:足够的信心、恒心和耐心。
    有同学问过我,单片机这门技术难不难。我觉得这个问题得从两个方面去分析。
    首先,我们从战略上藐视它。那么多同学跟着老师学一段时间就可以做出来小车,超声波测距,甚至做出来机器人,似乎很拽的样子。那他们又不是三头六臂,我们也没有什么做不了的道理。实际上要说技术,其实就是一层窗户纸,表面看不透彻,感觉特别神秘,实际只要你稍微一努力就可以捅破它,夸张点说,单片机在逻辑上的关系,只有小学的水平,简单的很。正所谓会者不难,难者不会,大家不懂这个东西,看起来感觉很神秘。所以大家只要认真踏实坚持学下去,肯定能学好这么技术。
    其次呢,我们从战术上要重视它。你说单片机这东西,如果十天八天就学会了,那么这个技术还能值钱吗?我可以这样去表达,如果一个技术很简单就被学会,那么很多人都会的这个技术,肯定也没什么前途和钱途。那究竟多久能学会呢?我给大家制定的学习方案,根据每个人的基础不同,平均每天要拿出2个小时以上的学习时间,大概一到三个月可以入门。入门的概念是给你一个单片机开发任务,你起码知道要努力的方向和解决问题的大概方法了。技术这东西,关键是坚持做下去,有恒心和耐心,如果长时间不用的话,肯定还会生疏。所以要想成为单片机高手,起码需要一年左右的单片机开发的历练才行。成为单片机高手的概念就是你自己可以从头根据自己的想法,去设计一个电路,根据需要的功能编写代码,做一个产品出来。
第二:教材和教程。
    要学习单片机这门技术,良好的教材和教程必不可少。单片机方面,大家可以直接学习我们这本《手把手教你学单片机——51单片机C语言开发》,我们还精心制作了配套的《手把手教你学单片机》的视频教程。本着开源、共享的理念,我们的视频教程都是免费开放的,大家可以到我们的网站www.kingst.org找到下载链接。另外,因为我们做单片机开发使用的是C语言,所以最好能再有一本纯C语言的教材,学到一些C语言的细节问题的时候,可以方便大家查阅,或者你也可以直接把相关问题通过谷歌和百度搜索一下,绝大部分情况下它们都会给你满意的答案的。
第三:电脑一台、单片机开发板一块。
    电脑,是学习单片机必不可少的工具,因为编写程序,查阅资料都得用到,但是有句题外话说一下,不要把电脑当成游戏机或者影碟机,偶尔玩玩游戏看看电影是可以的,劳逸结合,但是不可沉溺其中,否则还不如没有电脑。
    单片机开发板,这也是必须的。如果你还在上学,学校实验室一般会有开发板,可以考虑跟老师借一个,或者使用师兄师姐们用完的,这样可以省点钱。当然,如果身边有高手,比如辅导老师,会单片机的师兄,在他们的指导下做一个也可以,身边有人指导的话,不懂的问题还可以问他们。如果这些条件都不具备,那么可以购买一个,先学习别人的板子设计思路,给自己以后设计电路板打下基础。在这里就顺便推荐一下我们的KST-51开发板,我不敢说我们的设计是最好的,但是我可以很负责任的说,我们的板子是出自经验丰富的一线工程师之手,其中的设计都是根据实际项目开发的思路进行的,包括整体规划、电路设计、器件布局等等,可以为你今后的项目开发提供一个优质的参考。另外一方面,因为我们的教程是基于我们的开发板做的,所以大家配套来用的话可以节省时间,提高学习效率。
    当然,即使不购买我们的开发板,你想学单片机,也还是要有一块开发板的,不能总是用软件仿真,软件仿真是学不会单片机的。经常有同学过来问我,老师我用软件模拟的好用,做了硬件不好用是什么原因。在这里我提一下,如果你上课用这个软件仿真,糊弄老师应付考试是可以的,但是实际开发和仿真软件却差别很大,如果真心想学好单片机这门技术,那我只能告诉你,拿起烙铁焊电路,动手写程序,远离仿真软件,靠软件仿真永远学不到真正的技术。

1.4 单片机开发软件环境搭建

    单片机开发,首要的两个软件一个是编程软件,一个是下载软件。编程软件我们用Keil  uVision4的51版本,也叫做Keil C51,不做过多介绍,先直接讲如何安装。
1、首先准备Keil uVision4安装源文件,双击安装文件,弹出安装的欢迎界面,如图1-1所示。
微信图片_20200621143619.jpg
图1-1  Keil安装欢迎界面

2、点击“Next”按钮,弹出“License Agreement”对话框,如图1-2所示。这里显示的是安装许可协议,需要在“I agree to all the terms of the preceding License Agreement”打勾。
微信图片_20200621143623.jpg
图1-2  “License Agreement”对话框

3、点击“Next”按钮,弹出“Folder Selection”对话框,如图1-3所示。这里可以设置安装路径,默认安装路径在“C:\Keil”文件夹下。点击“Browse...”按钮,可以修改安装路径,这里建议大家用默认的安装路径,如果你要修改,也必须使用英文路径,不要使用包含有中文字符的路径。
微信图片_20200621143626.jpg
图1-3  “Folder Selection”对话框

4、点击“Next”按钮,弹出“Customer Information”对话框,如图1-4所示。大家输入用户名、公司名称以及E-mail地址即可。
微信图片_20200621143629.jpg
图1-4  用户信息

5、单击“Next”,就会自动安装软件,如图1-5所示
微信图片_20200621143632.jpg
图1-5  安装过程

6、安装完成后,弹出来安装完成对话框,如图1-6所示,并且出现几个选项,大家刚开始把这几个选项的对号全部去掉就可以了,先不用关注有什么作用。
微信图片_20200621143634.jpg
图1-6  安装完成

7、最后,点击“Finish”,Keil编程软件开发环境就这么装好了。

1.5 Keil基本概况介绍

   首先,我们用Keil先打开一个现成的工程,来认识一下Keil软件,如图1-7所示。
微信图片_20200621143638.jpg
图1-7  工程文件
    从图1-7我们可以很轻松的分辨出菜单栏、工具栏、工程管理区、程序代码区和信息输出窗口。这个是Keil4的英文版,网上有一些汉化版本的,但不建议使用。即使你的英语不好,使用英文版本的软件也一点问题没有,刚开始大家先跟着我去使用,一共没几个单词,不需要你去翻译,用几次你就记住怎么用了。因为以后做实际开发的时候,大多数软件都是英文版的,如果现在学习的时候一直用中文软件,将来一旦换了其它的英文软件就会慌了,所以从现在开始,我们就慢慢的来熟悉英文软件,将来再用到其他英文软件的时候,就可以做到触类旁通、驾轻就熟了。
    Keil软件菜单栏和工具栏的具体细化功能,都可以很方便的从网上查到,不需要记忆,随用随查即可。在这里我们只介绍一点,关于Keil软件里边的字体大小和颜色设置。在菜单Edit-->Configuration-->Colors &Fonts里边,可以进行字体类型、颜色、大小的设置,如图1-8所示。
微信图片_20200621143642.jpg
图1-8  字体设置(一)
    因为我们用的是C语言编程,所以我们在Window栏中选择8051:Editor C Files,然后在右侧Element栏目里可以选择要修改的内容,一般我们平时用到的,只是其中几项而已,比如:Text——普通文本、Text Selection——选中的文本、Number——数字、/*Comment*/——多行注释、//Comment——单行注释、Keyword——C语言关键字、String——字符串,Keil本身都是有默认设置的,可以直接使用默认设置,但如果你觉得不合你的口味,那就在这里更改一下,改完后直接点OK看效果就可以了。
微信图片_20200621143645.jpg
图1-9  字体设置(二)

1.6 答读者问

    很多同学经常问我一些问题,有一些很有现实或普遍意义,于是我把有代表性的直接写出来给大家参考,让大家了解这门技术,了解我们这个行业。
1、单片机学完了能做什么?
    单片机的应用非常广泛,电子、电气、自动化、通信等领域都有大量应用,至于能做什么,得看你将来做什么工作。如同电脑一样,电脑可以用来编程、PS图片、看电影、打游戏等等,你用电脑做什么是不一定的。但是掌握好这门技术,起码可以让你学会一种工具,为将来从事电子、电气、通信、自动化等领域的工作做好准备。
2、学单片机的捷径是什么?
    做技术必须得脚踏实地,没有任何捷径可走!如果非要说有的话,那我只能告诉你,拳不离手曲不离口,就是最好的捷径。我学习单片机的时候,每天早上8点半进入老师实验室,晚上9点半离开实验室,曾经创下连续3个月没有休息日的记录,如果你也能这样学的话,那很快就可以学好这门技术了。
3、学习单片机应该学习什么语言,有没有必要再学习汇编
    相比较来说,汇编语言比较接近单片机的底层,使用汇编语言有助于理解单片机内部结构。简单的程序,用汇编语言,程序效率也可能比较高,但是当程序容量达到几千上万行以后(这时也仅能算个不太小的项目,还远没到大项目的级别),汇编语言在组织结构、修改维护等方面就会成为你的噩梦了,此时C语言就有不可替代的优势了。所以实际开发过程中,目前至少90%以上的工程师都在用C语言做单片机开发,只有在很低端的应用中或者是特殊要求的场合,才会用汇编语言开发,所以我建议大家还是用C语言开发比较好一些。
    如果现在正好上学学到了汇编语言,我建议认真学一下,学好了肯定有益无害。但是现在如果说想直接快速学会单片机技术,那我就不建议去看汇编语言了,直接学C语言就可以了,那些单片机底层的结构什么的,也可以在日后的开发过程中慢慢理解。
4、学会单片机后能找什么样的工作
    单片机是一个工具,和电脑有点类似但不完全一样,我们学会电脑,可以用来编程、可以用来画图、可以用来PS照片、可以用来看电影等等。学会单片机,可以用来做通信技术、做自动控制技术等等,但是单片机本身来说仅仅是一个工具,你在用单片机的时候,慢慢接触多了,会有一个应用方向,你不仅仅要会单片机,也得对这个应用方向熟悉,比如我个人从事过扩频通信技术的算法研究,那么我就要对扩频通信熟悉,然后把这个技术用单片机实现出来,也得会用单片机。当然大家也不用担心,找工作的时候公司对这个方向问题要求也不会很高,但多懂点的话,肯定也会提高自己的竞争力。
5、学完了这个工资待遇如何
    对于技术来说,技术水平高低直接决定你的工资薪酬。技术如果学的不好,那工作都找不到,更谈不上工资待遇了,而技术做的好的话,那工资就自然会很高。我们并不清高,我们坦言自己需要足以安身立命的薪资报酬,但是我希望的是,一旦你决定从事技术,就不要把过多的精力关注在能挣多少钱上,而应该放在如何提高自身的技术水平上,只要技术水平高,比很多人都厉害,钱自然就找上门了。有一部印度的励志电影叫做《三傻大闹宝莱坞》,我推荐做技术的都可以看看,里边有一句经典台词非常适合我们技术人员:



追求卓越,
成功就会在不经意间追上你!

收藏 评论0 发布时间:2020-6-21 14:41

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版