什么是嵌入式
首先,先来聊聊嵌入式这个概念。什么是嵌入式,有人说ARM才是嵌入式,
Linux才是嵌入式,而且现在大大小小的培训班讲的都是基本上都是Linux。
现在Android,苹果比较流行,有些培训班也开讲这些系统上面的应用程序开发了,说这才是嵌入式。说下我个人的看法吧,我觉的嵌入式,就是相对于PC来说的,所有的小型控制设备都能称得上是嵌入式设备。Linux和Android上的应用程序开发已经算得上是PC级别的开发,个人感觉离嵌入式已经很远了。
选择什么单片机开始学习
有人说ARM才是嵌入式,51是单片机,不算嵌入式。这些话估计是从卖ARM开发板的商家那里传出来的。51、ARM都是嵌入式,51是8位的单片机,ARM是32位的单片机(当然,这里针对ARM7或Cortex-M3说的,像ARM9,ARM11就不应该称作单片机)。51结构比较简单,ARM复杂一些,但原理是都是相通的。学好51单片机,再去学习ARM,会非常简单的。
看完上面的话,你会不会说:“JS,快别说了,因为你是做51学习板的,你才这么说,你要是做ARM开发板,你就不这么说了”。非也!非也!你说的因果反了,我先这么认为的,所以先做的是51学习板。
我们举两个例子来简单比较一下:
先说最简单的GPIO,51单片里有GPIO,可以用来基本的输入、输出。ARM上也是GPIO做最基本的输入输出。51上的GPIO怎么用呢?我们就是简单的向SFR里写0或写1就可以了。ARM呢,也是一样的,向相应的SFR里写0或写1就行了。只是在用GPIO之前,需要对这个GPIO进行配置一下,什么是配置,说白了,就是多写几个SFR。
再来看一下UART,这个是51的标配,ARM上也都有UART。操作式有什么不同?基本的配置、读写都一样,轮询操作也行,中断操作也行。就是ARM上的要复杂一些,配置的参数也多一些。但本质都是一样的。
再有的差别就是,ARM上的外设要多一些,51上的少一些。但入门之后,外设的学习就和UART的学习一样,是个试验和积累的过程。
8051单片机经过多年的发展,资料非常齐全、内部结构简单,价格也相对便宜。在你的身边也很容易找到熟悉51单片机的人。所以非常适合初学者的学习。我们建议刚开始学单片机的童鞋从51单片机学起。如果把51单片机学好了,你的C语言同时也学好了(注意,这点很重要),硬件基础也学好了,开发的流程和方法会了、解决问题的方法也积累了一些。这个时候再来学习更高级的ARM,就简单的多了。
怎样学习
学习单片机是非常重视动手实践的,不能总是看书、看视频 ,在那里死记理论。但也不能完全不看书(不推荐完全看视频,视频虽然信息量比较大,看起来也比较容易接受,但无用的信息也比较多,同时也会减少我们思考的时间,而且反复的看视频本身也浪费时间)。我们建议应该遵循的方法是,在实践中入门,再让理论指导更深层次的实践,在实践中再成长,再学习更高级的理论,如此形成一个良性的循环。
先了解简单的理论,能开始动手就可以了。在实践的过程中遇到问题再看书查找(注意,不是找视频,视频查找起来太费劲了)把更多的时间放到实践中去,这才是关键的。
关于实践
关于实践,我斗胆说两点建议和一点不建议。
先说不建议,我们不建议直接使用仿真软件来学习。这不并不是说我们不支持使用Proteus等仿真软件,这类软件在一定程度上可以帮助我们学习,可以做最基本的程序验证,但如果过度依赖它,我们失去的将是对硬件的调试机会。只有把硬件摆在你面前,亲自操作它,才会有更深刻的体验。
两个建议
1 搞一块开发板,不用功能特别的复杂,只要基本的东西:流水灯、数据码管、独立键盘、矩阵键盘、A/D、D/A、液晶、I2C总线,SPI总线就差不多了。如果能把上面这些功能都搞熟,那么就已经迈进单片机的大门了,可以向更高的阵地进军了。
2 找一个单片机不错的朋友(我可以当这个角色的哟,欢迎和我联系),有遇到困难的地方,他可以帮你即时解决,帮你少走弯路。助你快速入门。
再一个,使用语言的问题,一定一定一定选择用C语言开始学习。你可能需要一本C语言教程,但是一定一定一定不要一口气把它读下来,就是读5个一口气,也是没用的。一本教程在手,随时参考。我们推荐谭浩强老师的《C程序设计》,第二版、第三版都行。强烈建议开发者案头常备此书。
总结上面,只要你有信心,做事坚持到底。学会单片机是件挺容易的事儿。这里给个大概的步骤:
1 看书先了解一下单片机,大概了解就可以了。
2 跟着教程学习写程序。经历读程序 > 理解程序 > 动手改程序 > 自己写程序的过程
到这里你已经入门了。。再往后就是进阶的内容了。
1 把程序打造成独立的模块任你调用
2 跟着老师做项目,熟悉真正的项目开发过程。(没有项目也不用怕,条件成熟的时候我们会组织大家一起开发一些小项目)
乱侃了一些内容,请大家拍砖。。。