我是2009年(大三)开始接触单片机,那时买了一个51开发板,学习视频看的是郭天祥老师的《十天学会51单片机》,没有想到的是2015年在北京我竟然在郭天祥老师的公司海克智动亲眼见到了郭老师本人,还挺激动的那会,他们公司的一款空气质量检测仪用的就是我当时公司飞思卡尔的一款单片机,一上来就跑题了,^_^,赶紧回来。
我觉得初学者在学了C语言和数电、模电后就可以学习单片机了,最快的学习方式带着一个明确的项目需求,有目标的去学习,当你亲自动手完成一个项目后,你就真正的入门了。当然对大部分人来说,可能并没有一个明确的项目需求,甚至连单片机到底有什么用都不清楚,那们刚开始你可以找一个好的视频或者一本好的书,边学边动手做实验,什么跑马灯啊、数码管啊、按键啊、串口通信啊等这些基础的实验先掌握,最好是自动手敲一遍代码,并按照自己的想法去做一定的修改,在这个过程中你肯定会遇到问题,你要想尽一切办法去解决,并把其中的原理弄清楚,一定不能囫囵吞枣。如果你C语言不熟,正好借着学习单片机把C语言也能好好学了。
对单片机有了初步的熟悉后,建议亲自动手画一块板子,用Altium Designer之类的软件就可以,然后可以花几十元在嘉立创投个板,回来后自己手工焊接两块调试,最起码把基础的GPIO、UART、IIC、SPI功能调通,如果你自己做的板子可以正常的运行,同时里面是你自己写的代码,那感觉绝对很爽。有了这么一次成功的体验,你对单片机的感情一定进一步加深。也许你会说我又不想做硬件干嘛要学习画板子焊接啊,但是我还是建议你去实践一次,因为单片机是一个软硬件关联度非常高的行业,就算你将来工作不画板子不焊接,多一项技能和经历总是没坏处吧,不然每次听别人说什么封装、几层板啊等这些名词,你不懂总是很难受吧。话说我当时我就是没有自己去画板,后来工作后老觉得少了一块,于是又从头弥补了这块缺失的东西,虽然我现在不做硬件(我现在做产品经理),因为我自己走过这个流程,所以和硬件工程师沟通起来就比较顺畅,也清楚整个环节的工作量。
有了上述经历,就差不多可以用单片机来进行产品开发了,不同的产品、不同的行业对单片机的使用有着较大的差异,比如在消费类产品中,可能比较关注产品的低功耗特性,在工业产品中,可能会使用一些高级的外设如网口等,这就涉及到网络协议栈,而通常网络协议栈是搭配着RTOS一起使用的,你可能得学习RTOS;在汽车电子行业,可能会经常使用CAN总线,那么你需要了解CAN总线。还有一些产品会使用USB,你还得熟悉USB。这里说的低功耗、网络、RTOS、USB、CAN相对上述的GPIO、UART、IIC、SPI属于更复杂的外设或功能,如果要精通需要花费更多的时间。
对一个产品来说,单片机可以看做一个工具,本质是它是为产品的功能服务的,除了单片机本身相关的技能,你同时需要掌握的是单片机之上的行业的知识,让单片机真正的为你所用,产生更大的价值。