单片机模块化编程(二)再探

  作者:zhuzhaokun1987 时间:2015-02-02来源:电子产品世界

  头文件的文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体),好比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。

  下面我们来对LED.h这个头文件进行说明,一般来说,头文件的名字应该与源文件的名字保持一致,这样我们便可以清晰的知道哪个头文件是哪个源文件的描述。

  于是便得到了LED.c的头文件LED.h 其内容如下。

  #ifndef __LED_H__

  #define __LED_H__

  extern void LED_init();

  extern void LED_display();

  #endif

  这与我们在源文件中定义函数时有点类似。不同的是,在其前面添加了extern 修饰符表明其是一个外部函数,可以被外部其它模块进行调用。

  10、下面我们再来看delay.c和其头文件delay.h

  

 

  

 

  我们发现了一点一样的地方和一点异样的地方(这句话读的我也是醉了)。

  一样的是,对于头文件来讲,整体的框架似乎一点也没有发生改变,都是下列形式。

  #ifndef __DELAY_H__

  #define __DELAY_H__

  extern ……

  …… ……

  #endif

  这是头文件的标准编写格式,其中__DELAY_H__这个是头文件的名字,必须大写,中间的横线不能少。一般来说,头文件的名字应该与源文件的名字保持一致,这样我们便可以清晰的知道哪个头文件是哪个源文件的描述。

  而异样的是,我们在delay.c这个文件中,发现有”mytype.h”这么个头文件。那么这个是神马,又能做神马呢?下面我们来做一个简单的探讨。

  11、工程中的mytype.h是个什么样的存在

  大家可能早就注意到了,这个mytype到底是何方神圣,在分析之前我们先来仔细的“打量一下”。

  

 

  通过上图中的一段代码,我们能够发现,这好像是对字符串定义表达符号的宏定义,没错,你猜对了!!细心的小伙伴又发现了,我们通常在函数中的用法跟这并不完全一样啊,例如我们定义uint和uchar的时候,在程序中我们是这样写的:

  #define uint unsigned int

  #define uchar unsigned char

  那么非常好,这就是两者不一样的地方啦。在写的时候注意一下就好啦。另外,在对unsigned int和unsigned char等进行宏定义的时候,我们分别采用了多种字符来对其进行定义,这样做的好处是,能够使得mytype.h这个头文件能够很好的适用于不同的芯片和不同编程风格的程序员,也能够起到方便程序进行移植的这么一个目的。由此可见,如果我们将模块化编程很好的运用在项目开发中,能够起到避免冗余工作量和一劳永逸的良好效果。

  好了,以上几段代码都带着大家一一分析完毕,现在我们来进行一下编译,看看能不能一切顺利。

  12、对编译输出选项进行简单设置

  

 

  按照图中设置完成后,点击“OK”按钮即可。

  13、点击编译按钮

  

 

  14、打开工程文件夹路径,我们可以查找到输出的test.hex文件

  

 

  好了,大功告成了,第一弹宣布结束。。。

  --------------------------------------我是邪恶的分割线----------------------------------------------

  突然我发现,我的工程文件夹里的文件乱的厉害,看到它们犹如歪瓜裂枣似的躺在工程文件夹里面,我也是醉了。。。作为一个有着强迫症和密集恐惧症的并且又有着完美主义内心的我来讲,这样的情况我是要严格杜绝的!!!那么问题又来了(和挖掘机和蓝翔无关)。(第一弹貌似不能结束啦,goon吧)那么怎么样才能让他们变得乖一点呢?

  敬请关注《第一弹---单片机模块化编程(三)》----还您的文件夹一干净的“蓝天”

1 2

关键词: LED 延时函数

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版