c语言分层编程,模块化编程的分层设计经验

模块化编程的分层设计经验 和文档管理办法(xwj)

xwj 发表于 2006-2-26 23:28:00

模块化编程的分层设计经验

操作要点:

1、每一层直接对下一层操作,尽量避免交叉调用或越级调用

2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层

3、相同功能的外部函数尽量一致,尽量保证通用性

4、对于初次编程的模块,要严格保证中间各层的正确性

好处:

1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层

2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了

3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了

4、对于C语言编程,只需简单修改物理层就可完成不同单片机间的移植

呵呵,一些经验,大家有好的想法可以继续补充指正

一般分为以下几层:

---应用层--面向用户

软|     ↓

件|---协议层--现成的协议栈、软件包、标准库,大多是移植,不自己写,如FAT、TCPIP、OS、GAME等

相|     ↓

关|     ↓

---功能层--实现器件无关性,实现器件的各种功能扩展和器件通用性处理,如LCD的线、圆、矩形等功能,如EEPROM的块写,自己的print

硬|     ↓

件|---器件层--实现硬件无关性,保证IO无关性,只提供器件的基本功能,如字节读写、点

驱|     ↓

动 ---物理层--IO相关,直接操作硬件,实现硬件连接的多种方案

对应文件举例1:

---应用层--面向用户的主程序

软|     ↓

件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等

相|     ↓

关|     ↓

---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;引出LCD的线、圆、矩形、填充等功能

硬|     ↓             ↓

件|---器件层--文件lcd61202.c;lcd1520.c;lcd6963.c;lcd133x.c;lcd44780.c;lcd162x.c;lcd856x.c或者lcd1602.c;lcd12864.c;lcd320240.c等,引出基本的初始化、定位、写点、写字节函数

驱|     ↓             ↓

动 ---物理层--文件lcd61202_io.c;lcd61202_bus.c;引出器件的基本读写函数

对应文件应用举例2:

---应用层--面向用户的主程序

软|     ↓

件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等

相|     ↓

关|     ↓

---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;如EEPROM的块写统一化

硬|     ↓                         ↓

件|---器件层--文件ee24xx.c;ee93xx.c;ee_sdcard.c;ee29xx.c;ee28f.c;ee39xx.c;等

驱|     ↓             ↓

动 ---物理层--文件bus_i2c.c;bus_spi.c等

一个大的单片机程序往往包含很多模块,我是这样组织的

1。每一个C源文件都要建立一个与之名字一样的H文件,里面仅仅包括该C文件的函数的声明,其他的什么也

不会有,比如变量的定义啊等等不应该有。

2。建立一个所有的文件都要共同使用的头文件,里面当然就是单片机的管脚使用的定义,还有里面放那些需

要的KEIL系统的头文件,比如 #include,#include等等,把这个文件命名为common.h,

或者干脆就叫main.h

3,每个C源文件应该包含自己的头文件以及那个共同的使用的头文件,里面还放自己本文件内部使用的全局

变量或者以extern定义的全局变量

4。主文件main.c里面包含所有的头文件包括那个共同使用的文件,main.c里面的函数可以再做一个头文件,

也可以直接放在文件的开头部分声明就可以了,里面一般还有中断服务程序也放在main.c里面

5。对于那些贯穿整个工程的变量,可以放在那个共同的使用的头文件里面,也可以用extern关键字在某

个C源文件里面定义,哪个文件要使用就重复定义一下

6.建立工程的时候,只要把C源文件加到工程中,把H文件直接放到相应的目录下面就可以了,不需要加到工程里面。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值