- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基本8位单片机的软件平台设计方案(3) 太阳能热水器软件平台设计 平台目的 建立一个通用的、规范的、高效的、易读的、流程清晰的软件平台 通用性:针对太阳能热水器具有一定的通用性,太阳能热水器在此架构上修改即可 规范性:文件定义、变量定义、函数定义规范化 高效性:程序流程清晰,方便修改 易读性:大量注释保证程序的可读性好 模块化:大量程序模块化,方便其它程序调用 内容 一个标准程序,可以完成规格书所规定的热水器的基本功能。包含所有注释和说明。 编程规范:一套完整的编程规范,包括文件定义、变量定义、函数定义的规范化 文件调用关系:各文件间的调用关系图与全局变量的数据流图 程序流程图:包括程序总流程图及各关键子函数流程图,与程序一一对应。 基本软件架构 时间中断的处理 要求代码少,效率高 除了必须使用的扫描等功能,其他和时间有关的只是设置变量标志位,并不做任何处理,所有的处理均放在主程序中处理 必要时嵌入汇编实现 实现时注意优化代码,编译后使用反汇编程序来查看对应的汇编代码 注意有些芯片计时是不准确的,所以要有定时检测方法(可通过定时控制IO口输出之后通过示波器检测) 举例:SolarWaterHeater\main.c 外部中断的处理 外部中断要考虑到干扰的影响,一般会有滤波措施 必要时嵌入汇编实现 软件工程中的分层设计 分层设计思想 改变思路 一个源文件解决所有:可以,但可移植性和可读性不好。可以说把c程序做成一个文件的还停留在汇编程序设计的思路上,他只是换了种语言工具而已,而非改变了设计思路。 以后的系统会越来越复杂,使用成熟的代码等于站在巨人的肩膀上 从系统角度考虑问题:没有最好的,只有最适合的(不要迷信规格书),事实上很多系统工程师也不知道怎么做才是最好的 软件只是系统的一部分,但是如同人的大脑,是系统的灵魂所在,尤其在涉及到控制算法的时候 模块(文件)划分 头文件:被其他文件包含的文件,包括结构体定义和常量定义文件 主文件:main.c,负责所有文件间的调度 全局变量文件:所有的全局变量及其初始化函数,尽量少的使用全局变量 硬件文件:hardware.c, 与硬件有关的文件 驱动文件:与硬件有关同时含有滤波或时序等功能的文件 流程文件:与硬件无关与流程有关的文件 其他文件:算法文件或通用函数文件 模块(文件)划分:头文件 .h文件只包含宏定义和函数声明,不包含变量的定义,可以被任何.c文件包含 Io_define.h:IO口定义头文件,文件内全部使用宏定义定义IO口及与IO相关的操作等内容。会被驱动文件和主文件调用。这些定义也是和硬件息息相关的,更改MCU的时候需要全部改写此文件 MainConst.h:常数定义文件,包括程序中用到的常量和枚举类型定义 MainStruct.h:结构定义文件,包含可能用到的所有结构定义,不包含变量 模块(文件)划分:主文件 Main.c, main.h: 主文件,程序的入口(注意并不一定是芯片复位后的入口),负责所有文件间的调度 Hardware.c, hardware.h:硬件文件,负责与硬件相关的函数定义,如MCU的特殊寄存器定义模块(f_InitSFR),AD检测函数f_CheckADVaule(),PWM输出函数等。这些函数都是和硬件息息相关的,更改MCU的时候需要全部改写此文件 GlobalVar.c, GlobalVar.h:全局变量文件,GlobalVar.c中定义所有的全局变量及其初始化函数,GlobalVar.h包括对全局变量的声明,使用全局变量的文件中包含GlobalVar.h即可 通用函数CommFunc.c, CommFunc.h:与硬件无关的通用函数文件,如BCD码转16进制码等函数,使用任何芯片此文件中的内容均不用修改 模块(文件)划分:驱动文件 与硬件有关或含有滤波功能或含有时序等功能的文件,称为驱动文件。不负责与流程有关的内容。与硬件的接口通过hardware.c或io_define.h来实现。如: RTC_PCF8563.c,RTC_PCF8563.h:时钟芯片8563驱动,和时序有关,主程序只要调用此驱动文件的各个函数即可实现对时钟芯片的读写操作 CheckWaterPos.c, CheckWaterPos.h:脉冲宽度或个数检测模块,如水流量脉冲检测,水位检测,一般会涉及到滤波算法 ChkADKey.C, ChkScanKey.c, ChkKey.h:按键检测模块,与算法相关,需要滤波,由于可以使用多种方式检测按键,故需要通过文件名将其分开。但文件里的函数名称是一样的,头文件也是一样的,这样在更改按键检测方式的时候只要更换编译的文件即可。 ChkAverageTmp.c,ChkMiddleTmp.c,ChkTmp.h
文档评论(0)