liudeee 发表于 2009-5-8 15:12:52

【请教】请教傻孩子,关于你的工程模版的使用。。

刚开了《深入浅出》的最后一章,感觉最后一章写的很简单,很多东西都不是很明白。
想让版主发表个关于工程模版的主题,讲解讲解。
如果我要在主函数中调用一个我自己写的键盘扫描和1602的驱动函数,这两个函数应该怎么被包含在工程中,是属于拿一层的?是EX_Support.h里么?

Gorgon_Meducer 发表于 2009-5-8 16:25:58

可以认为键盘应该放在EX_support.c中,而1602应该写一个自己的驱动函数库,并将这个
驱动函数库通过LIB_Config.h来配置。主函数中,通过包含LIB_Config.h和PF_Config.h
来实现对整个系统的包含。
详细内容,我在《深入浅出AVR单片机》精要中有了较为详细的解释。您可以参考这个帖子:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3239709&bbs_page_no=1&bbs_id=3039

实际上,工程包含的方法最重要的是自己体会,而且没有统一的方法,里面往往有很多自己的
理解和习惯,因此,多做项目多思考,多体会才是根本解决方法。

liudeee 发表于 2009-5-8 19:31:00

在问一下 在书中有PF_Config.h<-LIB_Config.h<- HD_Support.h   而在HD_Support.c中 又同时包含了
# include "PF_Config.h"
# include "HD_Support.h"
这两个可以省略掉一个HD_Support.h么?我觉得有点重复啊。


还有就是keyboard.h这个是不是理论上应该在LIB_Config.h中被包含。
LIB_Config.h应该是除了单片机之外的其他外设的库函数吧?也就是说 单片机的资源应该在EX_Support.h。而片外资源是在LIB_Config.h中,但是它们的初始都在HD_Support.c中。

我这样认为正确么?

Gorgon_Meducer 发表于 2009-5-8 23:43:04

最好不要省略。

如果KeyBoard.h是一个通用库,可以放在LIB_Config.h里面,如果不是一个通用库,而与硬件
相关度很高,就不能放在LIB_config.h里面。

liudeee 发表于 2009-5-9 13:13:58

呵呵谢谢傻孩子的帮助 昨天熬到2点终于想明白了

zzjjhh250 发表于 2010-6-29 00:33:30

傻孩子
2楼的:

zzjjhh250 发表于 2010-6-29 00:35:20

LIB_Config.h应该是除了单片机之外的其他外设的库函数吧?也就是说 单片机的资源应该在EX_Support.h。而片外资源是在LIB_Config.h中,但是它们的初始都在HD_Support.c中。
-------------------------------------------------
这一句话理解的正确吗? 我也是这样理解的,不过我觉得对于例如1602的初始化最好不要放到HD_Support.c中

Gorgon_Meducer 发表于 2010-6-29 10:06:46

根据老的编码规范,LCD的初始化应该放在EX_Support.c里面,或者LIB_Init()里面。

以前,我刚刚开始积攒库文件,因此,所有积攒的库都是在LIB_Config.h里面进行配置,如果牵涉到较为
复杂的配置,还会在LIB_Config.c里面建立一个专门的函数进行初始化。

最终,LIB_Init()这个函数会在EX_Support.c里面被调用(或者在System_Init()里面专门调用)。不过
这种分类方式现在看来并不妥当。但是,对于刚刚开始进行模块划分的人来说,还是有一定借鉴意义的。
-------------------------------------------------------

HD_Support.c专门负责AVR单片机自身外设的初始化,以及中断处理程序的设置。
EX_Support.c专门负责与AVR单片机外设相关的一些系统服务,或者处理。

简单说HD_Support.c实际上对应现在的Driver文件夹
EX_Support.c实际上大体对应现在的BSP + HAL + Service文件夹。
LIB_Config里面配置的那些库实际上大体对应现在Component和Service。
页: [1]
查看完整版本: 【请教】请教傻孩子,关于你的工程模版的使用。。