原创 关于单片机程序初始化硬件参数代码

2013-3-24 15:57 2026 16 20 分类: 消费电子

 

一个单片机的程序,设置了一些初始化硬件后不会再遇到的参数,然后将这些程序注释掉了,这样对于调试来说固然很好。但是,对于以后的程序与维护,都是一个潜在的隐患。
 
首先,对于以后再次使用的新设备,会出现意想不到的问题。因为偶然拿来一个新的设备,没有经过初始化,这个时候程序的参数都是要配置之后的,对于调试者是个灾难。要分析造成问题的原因,往往也不好分析,因为程序是好用的,硬件是新的。按常理是不应该不能运行的。但是它们不运行了。即使是对于程序的设计者,如果不是要注意一番,估计也不好发现这个问题。而会在分析了很长时间之后,发现是没有初始化的问题。浪费了很多时间。
 
其次,对于后来的程序阅读者而言(除非程序足够小亦或项目足够小,程序不会被第二个人阅读到),也是要费一番脑筋才能弄明白原作者的那段程序要怎么做。(这有违软件工程——程序是要让其他人都看得懂的原则)这样也会给新加入项目者,造成一些不必要的时间消耗,延缓项目时间。
 
怎么样处理好这样的问题是一个要思考的。一次初始化之后,以后程序运行就不会再执行的代码,如何处理才合适。在这里,认为没有最好的方法。对于不同的要求和实际情况选择最合适的方法,是比较可行的。
其一、将初始化程序也放在执行代码内,不给注释掉,每次开机检测是否已经初始化,如果已经初始化过,则正常执行,如果没有则执行初始化步骤。
其二、将初始化程序放在注释中,但是要有详细的注释说明,说明此段代码的用处,即用于何处,何时使用,以及声明此段代码不可删除。这相当于给单片机烧程序的下载器,虽然只用一次,但是不可或缺,而且要知道用途。

文章评论4条评论)

登录后参与讨论

用户1670484 2013-3-30 14:44

一个小细节,注意到了说不定会减少很多不必要的负担。

用户1670484 2013-3-30 14:42

嗯,确实应该这样

用户1377430 2013-3-29 13:37

its nice

用户1610239 2013-3-29 10:29

相关推荐阅读
catch2000 2015-07-19 11:44
信号线小电阻的作用
在一块新的PCB上,测试系统能否正常运行的时候,发现系统上电后没有正常启动。  系统框图如下:   在上电的时刻,CPU A(GPIO电平2.6V)会向串口发送启动日志数据,CPU A启动后,...
catch2000 2015-07-05 17:04
协议设计中ACK机制的影响
在TCP/IP中,延时ACK和Nagle算法。  TCP为了同时处理成块数据(通常为512字节的用户数据)和交互数据(通常用户数据比较少,例如不大于10个字节),采用了延时ACK和Nagle算法...
catch2000 2015-05-23 15:48
话说物联网操作系统
最近好多家都宣布推出自己的物联网操作系统。   1. Google将要在Google I/O大会发布的Brillo; 2. 三星推出的Artik芯片搭载Mentor Graphics的...
catch2000 2015-03-31 23:52
不要采用异或来交换两个变量
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是...
catch2000 2014-10-09 07:28
为什么要测试先行
在产品的研发过程中,测试一项至关重要。不论是软件还是硬件。   软件的测试先行,在研发过程中,就做到质量的保证,因为在出现Bug的时候,容易定位Bug,而且即使是在客户端出现Bug,也能够...
catch2000 2014-10-09 07:26
C语言的面向对象编程(一)
一、前言 对于编程而言,重要的是解决问题的方式,而不是语言本身。面向对象与面向过程是解决问题和思考问题的方式。C语言常说是面向过程开发的语言,因为其缺少很多对于面向对象特性的支持。但,这并不影...
我要评论
4
16
关闭 站长推荐上一条 /2 下一条