设为首页收藏本站

arduino 单片机机器人爱好者之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 987|回复: 0

转帖:跑马灯变形记(四)

[复制链接]
回帖奖励 1 金币 回复本帖可获得 1 金币奖励! 每人限 1 次(中奖概率 50%)

签到天数: 9 天

[LV.3]偶尔看看II

发表于 2014-12-25 08:34:21 | 显示全部楼层 |阅读模式
本帖最后由 雷柏 于 2014-12-31 08:08 编辑

转自:http://bbs.21ic.com
跑马灯第三次变形:文件/模块划分

    不得不说,将每个功能抽象归类,放入不同的文件中进行编译链接,这是一个质的飞跃。但拆分模块将会极大地考验程序员的经验和思维习惯,它并不是单纯的把一个大文件拆分、编译通过就完事了,它体现的是一个工程师对于架构的理解深度。做得好,可以使系统模块间关系简单、层次分明。做得差,混乱之源就此埋下

在这次的变形中,我们将设备分为如下文件:

1.jpg
单纯的剪切、粘贴操作后,我们会发现两个编译问题:

(1)    在main.c中,无法访问定时器的“flag_80ms全局变量”。
(2)    在timer.c中,无法访问“宏定义常量LIGHT_INTERVAL_TIME”。
    对于许多人来说,第1个问题好解决,extern出来就是了。第2的问题就犯浑了,从应用角度讲,这个参数用来控制跑马灯闪烁的间隔时间,应该是跑马灯模块的。从技术实现角度讲,这个参数只有定时器会用到它,应该放在timer.c里面。怎么办呢?最后一个折衷的办法,就是把LIGHT_INTE