看到许多在做电子工程设计的朋友在评论:转到该怎样学习?《单片机与嵌入式体系运用》小编为咱们找到了这样一位工程师,谈谈他的实践经历~
我曾经一向用的是51,不过一向是C51,对C言语现已有10多年的经历,汇编用的很少,后来由于项目需求转到了ARM。一开端对ARM什么都不明白,看了本《ARM体系结构与编程》也是云里雾里的,可是或许是由于无知者无畏吧,我直接就在MDK中树立一个工程,添加了自带的发动文件,然后做了个main函数,里边一个死循环没有操作任何硬件,竟然跑起来了。然后以此为基础,渐渐的开端操控GPIO和串口通讯,其时忽然发现,我的项目不便是搞搞这些吗?其他的什么运转形式、什么链接寄存器、什么PC寄存器关我鸟事,我只要能操控外设就行了。至于它是怎样完成的,那是编译器和链接器的工作。
现在回头想想开发ARM仍是很简略的,特别是运用MDK的话,会C也就能做一些简略的开发了。不要被那些八怪七喇的东西给搞糊涂了。边开发边学习,项目做深了,那些东西天然就懂了。咱们公司来了新人,我一般就叫他做个简略的东西,比方按键、串口等,做完也就差不多会了。
罗嗦这么久说几点主张吧:
1.ARM的汇编没必要去通晓的,可以大约看懂就行了。我一般在调试的时分才需求看看。假如一个速度要求苛刻到需求你运用汇编的话,我以为或许你更需求的是改变思路,修正算法。比方运用查表替代核算等。我做了5年ARM开发,完成了n个项目,至今没写过一句汇编。
2.工业操控方面由于有实时性和本钱要求,我一般不运用操作体系,但我会自己完成一些内存办理,事情办理,邮箱之类的东西。这些需求时刻堆集,平常写程序留意尽量通用化,然后树立自己的库,今后再用就爽了。曾经运用过一些操作体系,发现并没有进步我的开发速度,并且还造成了调试困难的问题,出了bug找都无法找。
3.关于公司来说,假如项目很大需求用到操作体系、网络、gui、文件体系等,自己做还不如直接买个板子,人家都现已做好了,并且bug很少,自己只要做运用就行了。量大的话还可以定制,算上开发本钱,或许更廉价。假如你是个人兴趣,那当我没说。
4.现在关于外设一般都有现成的库,我主张能不必仍是不要用吧。由于想要用好这些库,你有必要对外设寄存器比较了解才行,这时分你自己写一个就行了,并且简略的一个寄存器赋值,函数库往往需求调用一个函数来完成,太奢华了。可是关于运算库仍是要用的,比方DSP库等,究竟人家写的必定功率要高点。
5.用好中止,这对51和ARM是相同的。能用中止的当地肯定不必轮询,中止是单片机的魂灵,你的一切程序都应该环绕中止打开。
6.学好C言语,留意构成自己的编程风格,起好函数名和变量名,多写注释。不要怕麻烦,这些很重要,我一向以为最好的程序风格是使人不需求看注释就能马上了解程序的意思也便是:程序即注释。我有时分会写出a=b-2-1之类的东西,不要以为这很傻,其实是由于2和1别离代表了两个东西,你直接写成3就给了解增加了难度,并且这也不会下降功率,编译器会把它翻译成a=b-3的。
7.关于C言语多罗嗦一句,用好指针,假如说中止是单片机的魂灵,那么指针便是C的魂灵。
总归一句话,做ARM和做51差不多,要害仍是各种外设的寄存器操作。