热度 40
2013-2-24 17:48
5642 次阅读|
13 个评论
模块化编程简明教程 林德光 ldeguang1991@gmail.com 模块化编程是嵌入式一门很重要的编程能力。对于一个稍微复杂的系统来说,编程时我们不可能把它全部写在一个 .c 文件里,这样很导致文件超级长,不利于调试,从审美角度来说,也显得毫无章法。更明智的做法就是采用模块化编程。下面就模块化编程进行简单讲解。(注:平台 win7 ,环境 keil4 ,处理器 STC1T ) 先给一个大致的印象。 一个 demo 工程文件下的文件夹如图 这种编程做法的优点就是结构清晰,逻辑性好。下面进行演示。 首先,新建一个文件夹(这里我放在桌面的 demo 文件夹) 在 demo 文件夹下新建五个文件夹 COMM 、 HARDWARE 、 OUTPUT 、 SYSTEM 、 USER (这只是我常用的做法,你也可以做相应修改) 其中, USER : 用于存放用户文件:包括工程项目文件、主函数文件; SYSTEM : 用于存放系统资源文件,如 uart,timer 等; HARDWARE : 用于存放板载硬件资源,如 DS18b20,tube,key,lcd 等; COMM : 用于存放通讯协议文件,如 I2C,SPI 等; OUTPUT : 用于存放编译过程产生的“垃圾文件”,如,目标文件 (.obj) ,链接文 件 (.lst) , hex 文件等。 然后,打开 keil4 ,新建工程,保存在 USER 文件夹下,如图, 接下来的芯片选择等我就不多说了,你懂的…… 新建 demo.c ,用于编写主函数 , 保存在 USER 目录下。现在 USER 目录下文件有: 现在假设我们要加入 LED 模块,那么我们就在 HARDWARE 文件下新建 led 文件夹, 打开 led 文件夹,新建 led.h , led.c ,如图: 这里说明一下, .h 文件一般负责“声明”函数和配置, .c 文件负责“定义”函数。 分别编写 .h 和 .c 文件,这里我简单 demo 一下: led.h led.c 现在我们编写好了模块文件,重新打开 demo 工程,首先进行文件组织, 在 Groups 下删掉 Source Group1 ,新建 USER 、 HARDWARE ,(其他的文件夹就不新建了, demo 工程没有用到) 选中 Groups 下 USER ,在 Files 框下点击 Add Files ,添加进 USER 文件夹下的 .c 文件, 选中 Groups 下 HARDWARE ,在 Files 框下点击 Add Files ,添加进 USER 文件夹下的 .c 文件, 添加完,就这样…… 弄完就点 OK ,返回到主界面, 可以看到文件结构树已经跟我们一开始新建的文件夹结构统一了,如图(其他文件夹用不到,先忽略) 接着,设置中间过程产生的文件的放置位置 编写主函数,编译: 编译之后,可以发现编译器编译出错,说找不到 led.h 于是,我们还必须进行一项设置(编译路径) 编译路径我们添加进去了,再重新编译, 可以看到没有报错,(一个警告是因为我们编写的另外一个函数 LED_OFF() 函数没有调用),如果想不要这个警告可以这样设置, 大功告成,以后添加模块这可以按这个步骤就可以很快构建自己的工程文件了。