吴坚鸿谈单片机自由职业者的五项技术修炼 第一项修炼:学会51单片机的C语言编程。会了51单片机接着学什么?学AVR,还是PIC,还是MSP430,还是STM32,还是DSP?初学者经常会问这类问题。鸿哥告诉你,只要会了51单片机,其它的单片机都不用再刻意去学了。因为只要它是裸机跑的,它就跟51单片机大同小异。这个跟学车的道理是一样的,你会开桑塔纳了,还要再刻意去学宝马吗?我最近接了一个项目,必须要用到STM32和DSP,这两种芯片我从来都没有玩过,你们看看我是如何快速上手的。我先买了几本书,大概浏览了一下它们内部的资源跟51单片机有什么不一样。接着我又买了两块学习板,学习板的厂家提供了大量的资料和例程,硬件上它们提供了原理图,我看看原理图就知道最小系统的工作电路了,他们还送学习用的开发集成软件平台,还教你如何安装,如何搭建一个完整的工程,如何烧录程序。除此之外,他们还送定时器,AD等常用功能模块的例程,这些例程里包含了每个功能模块的寄存器配置。有了这些资源,你觉得还难吗?结果我学STM32只用了三个小时,学DSP只用了两天。 第二项修炼:学会画电路板。包括原理图和布线,至少是两层板。写程序和画电路板是不分家的,客户往往不愿意把一个项目分成两部分,分别外包给一个软件工程师和一个硬件工程师,只有方案公司的老板才会这么做。道理很简单,如果外包给两个工程师,首先责任不明确,有可能出现软硬件工程师相互扯皮的情况。其次,客户要浪费至少一倍的时间在沟通上,如果两个工程师工作的地点相距很远,客户还要浪费一倍的时间在交通上。最后,升级维护非常麻烦。
第三项修炼:学会VC电脑上位机软件编程。包括串口通讯,USB通讯,网络通讯,数据库。在外面接单片机项目做的,会经常遇到要跟电脑上位机进行串口通讯的。如果连PC的上位机编程你也会,那么恭喜你,你的业务范围就会更加宽,你的附加值就会更加高,优势更加明显。为什么我推荐学VC呢?因为在VC平台下是用C++编程的,C语言和C++语言都是当代最流行最通用的编程语言。我学C++专门用了半年的时间,中间陆陆续续学习在VC平台上开发上位机软件,也花了大概一年多的时间。
第四项修炼:学会FPGA或者CPLD。这种芯片跟单片机不是同一类型的芯片。它的编程是硬件描述语言,编译器根据我们写的描述语言,自动生成我们定做的外围芯片。懂了CPLD或FPGA,你可以自己“制造”任何一款74系列的外围数字芯片,这些芯片引脚对外的通讯协议也是你自己设计,自己定制,想怎么玩就怎么玩。
第五项修炼:Linux嵌入式系统的开发。其实只要你会了51单片机和VC编程,那么你再学嵌入式系统就不会很难了。因为Linux嵌入式系统和普通电脑上windows系统的原理是一样的。Linux的裁剪移植相当于电脑重装系统,Linux的应用程序开发相当于在电脑上开发VC上位机软件,Linux的驱动编写相当于类似电脑的USB驱动编写,驱动开发对于会51单片机的人来说,是相通的。我以前没接过Linux嵌入式系统的项目,关于 第五项修炼这段内容的阐述,完全是凭我个人的猜想,如有不恰当的,请谅解。最近有个非常优质的老客户提醒我,他明年要给我一个Linux嵌入式系统的项目,所以如果有时间我也会开始学习一下嵌入式系统。
我觉得作为单片机自由职业者,第一项和第二项必须要掌握,有了这两项技能,在深圳赚点生活费是没问题的。第三项和第四项应该重点花时间去突破学习,这两项跟单片机关联很密切,学会了它们就可以接一些附加值更加高的大项目。之后,有时间就多学学第五项。精通了51单片机,接下来不管是学哪一项技术,都不用过于深入学习,只要达到能编写简单例程的程度就可以了。那么什么时候才是深入学习的好时机?当然是在帮客户做项目的时候,需要用到哪一项技术就深入学习哪一项。我深信,只要会了这五项技术,机会就会越来越多,开发费就会越来越高。 |