|
本帖最后由 oldbeginner 于 2013-11-22 08:55 编辑
主函数并没有理解完,因为感觉理解主函数的一些工作还没有准备好。有了这些准备工作,主函数就是非常容易理解的了。
这里要开始理解一下文件管理,理解好了文件管理,就可以单独调试各个模块,比如笔记05中的uart模块,虽然是从程序上理解了,但是并没有做过测试,uart环形队列能正常工作吗?自己试了一下,觉得很难,这就更有必要回头把模块调试好。而要把模块分清,自然需要文件管理知识了。
首先,一栏开源PLC的文件结构,
结构还是很清晰的,首先第一种关系,利用system.h是个头文件集中
所有C文件中的全局函数定义到对应名称的头文件中(要有防重复引用机制)
所有头文件包含在system.h中;
在所有文件中包含system.h。
第二种关系,就是例外的C文件和头文件关系。
因为我是初学者,对如何安排头文件和C文件有些混淆,出现重复定义错误时手足无措,不过,现在好像解决了这个问题。
搜一下,
http://www.eeworld.com.cn/mcu/2013/0701/article_13351.html
因为内容不错,大量摘录,
1)h文件作用
1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。
2)h文件里应该有什么
常量,结构,类型定义,函数,变量申明。
3)h文件不应该有什么
变量定义, 函数定义。(最容易产生重复定义的错误)
4)extern问题
对于变量需要extern;
对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。
5)include包含问题
虽然申明和类型定义可以重复,不过推荐使用条件编译。
#ifndef _FILENAME_H,
#define _FILENAME_H
……
#endif
6)应该在那儿包含h文件
在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include "delay.c"这类的程序,同时也不提倡使用这个形式。**************************************************************开源PLC的文件管理格式总体上还是比较好的,虽然不排除最后做些文件管理上的更改。例如,uart.h,iap.h等就完全符合上面的观点 理解文件管理上,就可以开始测试模块了。首先测试uart模块,我已经做了一些工作,这个模块对我来说还是比较难的。另外该模块的测试会单独写在新笔记05续里。 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|