很多人说单片机很简单。但本专业学生都认为单片机是最难学的课程。为什么学起来都这么吃力呢?
很多人说单片机简单?是的,对于一个在嵌入式开发奋战了十多年的老程序员而言,单片机无非就是那么几大件东西。单片机很难掌握?也对,尤其对于那些刚开始接触,比如题主提到的大学本科刚接触的同学来说,单片机挺神秘也挺复杂的。七天学会单片机?个人觉得可行。但是必须要有基础,零基础的话顶多混个脸熟。
所以说,回到问题本身。不同的人,对单片机的学习会有不同的接受情况。可以说,题主目前感觉到单片机学习存在一定的困难,是非常非常正常的事情。别看答主现在对多款单片机都能达到熟练使用的水平,但是回到本科阶段当第一次面对单片机课程的时候也感受到了同样的困难。
我是自动化专业出身,单片机课程是当年自动化专业重要的必修课之一。虽然在很早之前答主曾经基础过单片机,也看过如何编程和使用。但是那时候终究是以玩为主,并未深究原理。所以答主一样,面对单片机课程中,各种深入的原理和知识点,一样感觉到了理解的困难。但是,后面掌握了正确的学习方法后,也逐步开始喜欢上单片机,接受了单片机课程(即使那时候,答主对C51的编程还是以汇编语言为主)。
有了C51的基础,再到后面的MSP430系列,STM32犀利等等单片机,答主基本上不会再觉得有初见C51时候的困难感觉。毕竟有了基础,理解力的提升是一个方面。关键在于:单片机的学习掌握了一定的方法和技巧。
明确了谁第一次学单片机都觉得困难的问题,题主完全可以卸下心理包袱。咱们继续来看,针对大学本科的课程,我们来如何学习单片机的问题。本科阶段的老师,说实话讲课多数以照本宣科为主,至少当年答主的单片机老师就是这样。好处就是他会详细解答书本中的任何问题,而且他也会避开一些不重要的章节,相当于帮我们筛选掉一些非关键章节,让我们的努力更加集中。
>>> 第一,多角度理解术语
初次接触单片机,会遇到很多专业的术语。比如总线,比如时钟树,其实扒开了看,很多术语知识都是以前咱们前面学过的一些知识的拔高和集合。一本书看不懂,那么我们可以从其他的教材,网络,自媒体去研究一下这个术语的含义。
就像前面提到的,答主为什么觉得单片机简单?除了因为学的多,用的多因素外,理解能力和知识范围的扩大,都会对接受新的单片机提供帮助。一个思维方向理解不了,那我们就换个思维路线,或者用以前过往的经验进行理解,等等。
>>> 第二,关注重点,在非重点领域不要浪费时间
单片机教材里,大致框架基本上都从历史演进讲起,然后是硬件架构(内部结构,外设和外部管脚),其次将会介绍如何控制这些面向客户的硬件(硬件寄存器),接下来会讲解如何用语言控制寄存器(编程语言-汇编),最后都会整理出一个具体的应用例子让大家将本书的硬件,软件串联起来。
这里面,我们不要花大力气研究历史,去刨根问题为啥51单片机的总线就8位的问题,也不要去探求51单片机为啥硬件这么简单的话题。把精力多放在寄存器、编程语言的学习上。但是,不要深究为啥这个寄存器的这个bit置位或者清零,单片机就这么运行的问题。
>>> 第三,编程能力是练出来而不是想出来的
编程语言和编程能力,和我们学习第二外语很相似。都是需要语境和不断练习的。很多学校的单片机课程都会配套实验课程,提供单片机电路板进行编码练习。千万别像答主年轻时候一样,就为了完成实验作业草草写个程序就交差跑出去踢球,珍惜难得的实验条件多验证验证其他的寄存器指令,多接触一下单片机硬件,对于理解编程语言很有帮助。
>>> 第四,老师在菜也是比你经验丰富
跟着老师的节奏来,毕竟人家也是认真备课的。先不说他的讲解如何,但是至少我们知道他讲的东西,考试肯定涉及,也是这么课程的重点。再者,一个现成的线下答疑老师,多好的机会和资源我们还不好好利用起来。
综上所述,刚开始接触单片机课程感觉难非常正常,别有啥心理负担。按照步骤来,合理分配时间和精力,多角度学习,多沟通多请教,最重要的是勤加练习。一定可以掌握单片机课程的精髓,为后续的就业和深造打下基础。