下星期开始,连着休息两个星期,这段时间就离开南京回到我那遥远的家乡了。为了庆祝
,特贴出个人心得,望大家支持!觉得好可要跟帖啊!标题有点过了,只是为了多吸引几双眼球,
可别以为我就爱吹牛。
这篇心得不是面向初学者的,而是面向入门了的急需提高编程水平的人。如果是初学,可
以浏览一下,对于以后形成自己编程的方式和风格有参考价值;如果是已经入门的,可要好好琢磨
了。同时欢迎大家指正。
我的工作偏软,只用P89C669,MSP430开发几个产品,主要包括GPRS负荷控制终端,交流采
样等电力产品,运行情况还不错。上月公司硬件平台升级,转向ARM了。
作嵌入式软件这一行,一定要对它有兴趣,要热爱这一行。有时为了一个更好的方案,自
己的程序会反复修改、调试,确实很累,可以说双休日没事的话,一定在家里调程序。再加上随时
要学习新技术,新器件,当然英语好点就更方便一些了。所以大家一定要有吃苦的准备。
在语言方面,感觉就是工具的差别,软件思想其实都一样。不可否认汇编的确强大,有些
功能用汇编很简单就可以实现,用C可能就要麻烦些,但C的强项我就不说了,网上到处倒是。我用
P89C669芯片时,就用的汇编,用MSP430时就是C+汇编了,C用的久了,很多方法极为接近C++的数据
封装的风格,只是做不出继承和多态,可能是水平不够。要点是大家一定要学会分层设计。总的说
来,就是将基本操作做到最低一层,包括简单的寄存器操作等;在它的上面一层作驱动层,基本上
要在这两层将硬件相关的操作包括进来以及所有中断处理服务,这点极为要紧。例如在汇编中经常
要考虑函数要不要PUBLIC,在C语言中模块要安排好,哪些是私有函数(STATIC),哪些是公有函数等
等。注意用汇编也要封装好,不该访问的全局变量就不要引出否则将来程序大了,要让你维护的话
,你会死得很惨。说到底就是要封装好。我认为这就是专业与业余的区别。如果只是业余学习的话
,可以看看开发板的DEMO程序,看懂即可然后跑个程序看看,体会一下控制硬件的感觉就好,而专
业人士肯定不会用DEMO。至少我不用。在这两层上面就是应用层,要求下一层为上一层服务。还是
举个例子吧,免得名词太多,大家晕头。比如在MSP430中UART的485通讯的编写,可以将其寄存器的
操作、波特率的设置,端口的处理等作为第一层,如果用C语言的话,通常用内联函数,一两句就可
完成的简单操作。用汇编的话用宏就可以了。这一层的编写只需要你对芯片熟悉就没有任何问题。
要注意的是由于直接与寄存器操作,特权很高,所以它们的头文件只能被第二层#INCLUIDE.第二层
比较复杂一些,通常将中断中对于UART缓冲,以及对时钟的处理封装好。为什么用时钟呢?呵呵,
就不告诉你!就不告诉你!...。别扔了,我说还不行吗?因为465通常需要切换控制端口,可以借
用定时器来完成。注意只是借用。因为一个系统产品肯定会用道定时器的,而485切换控制可以借用
,不用单独占用定时器的。当然,如果资源够得话也可以单独用一个定时器来完成。那第三层方什
么呢?其实就是规约的解析部分。它们通常在主程序中被调用。这样一条线下来,好处实在是太多
了。各层主题目标明确,脉络清晰,便于调试和维护,另外如果硬件平台改变了,可以只改写最下
面的两层,第三层以上的东东基本上不用改动,你想想那么多的规约解析处理程序可以重复利用,
多好呀。我现在改ARM,很快就搞定的串口通讯部分。这就是分层的好处。这样随着代码的累积,开
发大型的产品也是很容易的事情了。
大家感兴趣的话可以用MSP430做一个485通讯,第一层要自己作,第二层可以参考IAR安装
目录下\DOC\APPNOTES\AppNote430-03文件,但是要改动,加入定时切换功能,并且最好将缓冲区相
关的变量用结构封装起来免得太乱,最后按自己的需要写第三层规约解析,在这一层千万不要直接
操作硬件,只能调用第二层提供的功能。做完之后,你一定感觉到自己进步了。我最初就是这么做
的。以后如果工作需要,可以进一步作全双工通讯,那样的话,缓冲区要改,收发控制也要精心准
备的。。
作嵌入式软件的人一定要敢于动手,不要依赖别人,(干这一行男的较多,估计胆子都较
大),如果是作偏软的话就更不用担心了,买个实验板,写程序、调试程序估计几年都没问题,我
的430开发板用了快两年了,现在还可以用。动手多了,自然就可以成为解决问题的专家!!
说了这么多,就是希望大家都能进步,提高自己的水平。同时也希望大家能拿出自己的体
会与经验,共同进步。木桶定律讲得很有道理:一只木桶盛水的多少,并 不取决于桶壁上最长的那
块木板,而恰恰取决于桶壁上最短的那块木板。只有大家水平都高了,才能做出更好的产品。
用户1438129 2008-11-1 08:34