首先,来跟大家聊聊,我对于单片机是怎么接触到的。
我是从大二开始学习的单片机,因为所学的专业开设了这门课程。在此之前,我也只是听说有这么个东西叫做单片机,至于这个传说中的东西究竟长什么样,我也是从来没有见过滴!!!
下面,来看看它究竟长什么样吧~
这个黑黑的长方形的东西 ,就是我之前最常用的一款单片机,是STC(宏晶科技)出产的一款增强型51单片机。这里大家可能会有疑问,既然是增强型的,到底是怎么个增强法呢?(这个问题,我在这里不做解释,随着后面的“剧情发展”,我会逐步列举)。
那么,这个单片机究竟是个什么呢?这个在网上有许多说法,例如微控制器,单片式微控制器等。
但是根据我的个人理解,在最开始的时候,我就将它“粗糙”的理解成是一个开关,0打开1关闭,或者1打开0关闭。不管它内部到底有多么复杂的东西,总之呢,我暂且就将它当作一个开关 ( 注意以上纯属是个人最开始的理解)。
学习单片机的预备知识在学习单片机之前呢,我觉得先得需要掌握以下几门课程。不然的话,我个人认为,直接上手学习单片机会有很多困难无法解决,从而导致学习效果不太理想。
1、C语言
在行业内,写单片机的底层驱动代码,大多用的都是C语言。当然,也不缺乏有一部分的技术大拿,用汇编语言去写。虽然用汇编语言编写起来,在基于底层的硬件控制来讲,会比C语言写出来的代码执行效果好。但是,代码的可移植性比起C语言是远远不如的,在代码的可阅读性上也是不如读C语言方便的。同时,代码的书写复杂度也会比起C语言来难上很多很多很多!!!
这样说的话,可能同学们会认为,汇编已经被淘汰了,没有人用了。这样想的话,大错特错。在编写51单片机的代码时,咱们大多时候,会直接加载一个头文件"reg51.h"或者"reg52.h"也可能是其它的。但是同学们有没有想过这么一个问题,比如,在做一个工程的时候,代码是如何找到 void main(void){ } 的?是keil软件自动找到的吗?如果是keil软件找到的,那keil又是通过什么找到的?在这里,就涉及到一个特殊的东西,就是51单片机的启动文件。可能在这里同学们会问,这个启动文件,和我刚刚所说学习汇编有什么关系?在下面做出解答!!!!!
51单片机的启动文件就是用汇编语言编写的!!!
同时!!!
STM32的启动文件也是用会汇编语言写的!!!
那这个启动文件有什么用呢?
就是因为有这个东西,所以keil才会找到并跳转到 void main(void){ } 里面。当然,启动文件不只是干了这一个活,它里面还有许多的工作,有兴趣的同学可以自己去网上了解一下。
C语言既然如此重要的话,那究竟达到什么程度才能去学习单片机呢?
有的学弟问我:“我C语言现在就会用三大结构:顺序、选择、循环。学到这个程度,我可不可以学习单片机呀?”
答:“如果只是这个程度的话,同学,我劝你再去学一学C语言吧~”
还有人问我:“学长,我现在的C语言的水平已经会用函数,指针,并且都用非常熟练,并且,我数据结构也学的非常好,很多算法我也是理解的非常透彻。”
达到这个水平去学单片机的话,学习些基础性的知识,是完全没有问题的,但是我建议,多去网上找一些资料,看看人家的代码是怎么写的,向前辈们汲取一下经验。
如果有人这样问我的话:“哥,我现在感觉我的C语言编程能力遇到瓶颈了,我现在能看到操作系统的源码,我能用C语言写出来一个系统!!!”
那我会觉得你Good,Very good, Supper very good!!!
总结:我认为,C语言起码要把函数和指针这两面理解透彻了再去学习单片机,能掌握一些经典算法更好,同时也是掌握的越多越好。
2、电路知识(模拟/数字电路)
想要单片机“跑起来”,没有硬件平台是不能够的。为什么非要学习电路知识呢?
在实际的项目开发中,得需要设计电源电路吧?也得设计驱动电路吧?
不同的单片机,它的IO驱动能力也是不同的,这个时候,就需要非常扎实的电路知识来灵活的去设计它的相关电路。
当然,学会电路知识的好处不止于此,这里我就不一一列举,相信大家后来会慢慢发现的。
3、微机原理
学习了《微机原理》这门课程之后,我感觉只要是认真学了,那么电路知识也会达到一定的水平。学完这门课之后,学起来单片机会相对轻松一些。为什么要这么说呢?
《微机原理》学完之后,只要是做过实验的,可以将《数字电路》上的内容多多少少用到一些,这样就为后面学习的51单片机做了一个很好的铺垫。去看51单片机数据手册的手册的时候,它的最小系统电路,内部框图,引脚定义,你多多少少都能看明白一部分。
我上面说的可不是仅仅学会了那三门课程,在今后学起来单片机就可以高枕无忧了。嵌入式这方面要想搞的深入,《操作系统》,《网络基础》这些基础类学科一样也不可以少。
前面的三门课程掌握了,只是可以初步的去学习单片机!!!
但是随着大家的技术不断进步,学习能力不断提高,我相信,再艰难的课程也是小问题啦~
在这里,希望大家可以学习快乐,早日将技术达到自己理想的水平。并且,大家在今后的学习中遇到什么问题,也可以私信或者留言问我,我会尽量给大家一一解答!!!