关于单片机程序初始化硬件参数代码
2013-03-24 15:44
281 查看
一个单片机的程序,设置了一些初始化硬件后不会再遇到的参数,然后将这些程序注释掉了,这样对于调试来说固然很好。但是,对于以后的程序与维护,都是一个潜在的隐患。
首先,对于以后再次使用的新设备,会出现意想不到的问题。因为偶然拿来一个新的设备,没有经过初始化,这个时候程序的参数都是要配置之后的,对于调试者是个灾难。要分析造成问题的原因,往往也不好分析,因为程序是好用的,硬件是新的。按常理是不应该不能运行的。但是它们不运行了。即使是对于程序的设计者,如果不是要注意一番,估计也不好发现这个问题。而会在分析了很长时间之后,发现是没有初始化的问题。浪费了很多时间。
其次,对于后来的程序阅读者而言(除非程序足够小亦或项目足够小,程序不会被第二个人阅读到),也是要费一番脑筋才能弄明白原作者的那段程序要怎么做。(这有违软件工程——程序是要让其他人都看得懂的原则)这样也会给新加入项目者,造成一些不必要的时间消耗,延缓项目时间。
怎么样处理好这样的问题是一个要思考的。一次初始化之后,以后程序运行就不会再执行的代码,如何处理才合适。在这里,认为没有最好的方法。对于不同的要求和实际情况选择最合适的方法,是比较可行的。
其一、将初始化程序也放在执行代码内,不给注释掉,每次开机检测是否已经初始化,如果已经初始化过,则正常执行,如果没有则执行初始化步骤。
其二、将初始化程序放在注释中,但是要有详细的注释说明,说明此段代码的用处,即用于何处,何时使用,以及声明此段代码不可删除。这相当于给单片机烧程序的下载器,虽然只用一次,但是不可或缺,而且要知道用途。
首先,对于以后再次使用的新设备,会出现意想不到的问题。因为偶然拿来一个新的设备,没有经过初始化,这个时候程序的参数都是要配置之后的,对于调试者是个灾难。要分析造成问题的原因,往往也不好分析,因为程序是好用的,硬件是新的。按常理是不应该不能运行的。但是它们不运行了。即使是对于程序的设计者,如果不是要注意一番,估计也不好发现这个问题。而会在分析了很长时间之后,发现是没有初始化的问题。浪费了很多时间。
其次,对于后来的程序阅读者而言(除非程序足够小亦或项目足够小,程序不会被第二个人阅读到),也是要费一番脑筋才能弄明白原作者的那段程序要怎么做。(这有违软件工程——程序是要让其他人都看得懂的原则)这样也会给新加入项目者,造成一些不必要的时间消耗,延缓项目时间。
怎么样处理好这样的问题是一个要思考的。一次初始化之后,以后程序运行就不会再执行的代码,如何处理才合适。在这里,认为没有最好的方法。对于不同的要求和实际情况选择最合适的方法,是比较可行的。
其一、将初始化程序也放在执行代码内,不给注释掉,每次开机检测是否已经初始化,如果已经初始化过,则正常执行,如果没有则执行初始化步骤。
其二、将初始化程序放在注释中,但是要有详细的注释说明,说明此段代码的用处,即用于何处,何时使用,以及声明此段代码不可删除。这相当于给单片机烧程序的下载器,虽然只用一次,但是不可或缺,而且要知道用途。
相关文章推荐
- java SE基础(关于初始化代码执行顺序与变长参数的方法)
- 关于成员初始化参数列表的总结
- 单片机实验代码——多功能时钟程序
- 关于“世上只有妈妈好”的单片机音乐演奏程序
- 单片机的第一个程序(硬件部分)
- 阅读下面代码,程序列举了3种二维数组作为参数传递的方法:[转载]
- 检测到LoaderLock,正试图在OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码,这样会导致应用程序挂起。
- 关于ASM实例的初始化参数
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 关于初始化参数列表使用注意
- 关于main参数和inp.c代码阅读的一点笔记
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起
- 关于“socket:<10106> 无法加载或初始化请求的服务提供程序”问题的解决方法
- 单片机数字滤波 的 一段 代码程序
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码..
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 关于Java代码初始化顺序
- Java程序打包成带参数的jar文件实例代码
- Discuz!NT代码阅读笔记(2)--网站安装自动化--论坛程序安装及初始化过程