基本8位单片机的软件平台设计方案(2)

上传人:j****9 文档编号:57630144 上传时间:2018-10-23 格式:PPT 页数:27 大小:150KB
返回 下载 相关 举报
基本8位单片机的软件平台设计方案(2)_第1页
第1页 / 共27页
基本8位单片机的软件平台设计方案(2)_第2页
第2页 / 共27页
基本8位单片机的软件平台设计方案(2)_第3页
第3页 / 共27页
基本8位单片机的软件平台设计方案(2)_第4页
第4页 / 共27页
基本8位单片机的软件平台设计方案(2)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基本8位单片机的软件平台设计方案(2)》由会员分享,可在线阅读,更多相关《基本8位单片机的软件平台设计方案(2)(27页珍藏版)》请在金锄头文库上搜索。

1、基本8位单片机的软件平台设计方案(2),基本平台架构设计及模块划分,平台设计目标,规范性:做到从变量命名、函数命名到模块划分全部有规范可依,使非编程本人也可以正确、快速、无误地修改软件 硬件无关性:与硬件有关的函数单独处理,而主程序则通过调用这些函数来对MCU端口进行操作,这样无论使用什么MCU,只要支持C语言,都可以很快地将程序移植过来,使软件不再受MCU的控制; 可扩展性:流程确定后,如果有新的模块加入,不会改动整个系统流程,只需在程序中加入此模块的调用,修改与此模块有关的函数即可; 模块化:将整个软件程序分为若干个模块,模块之间通过函数相连,只要确定了模块的输入/出变量以及模块流程,此模

2、块在经过详细测试后便可保证不再出错,如有新的程序需要编写,只需编写新的模块即可,真正使软件错误不会重复出现; 可移植性:本方案中所定义的模块可以嵌入至任意一个系统,在编制一个新的系统前,首先将与系统有关的函数调用过来即可,基本软件架构,外部中断,主循环,时间中断,* 三者是并行的关系 * 本质上单片机是顺序执行,只有在中断发生的时候才会进入中断执行,中断内容执行完毕后返回到主循环中 * 事实上程序中的大部分代码都是无硬件无关的,因此我们为提高程序的可移植性,提出分层设计的思想,软件工程中的分层设计,硬件平台,硬件抽象层,驱动程序,应用程序,操作系统,基本软件平台,我们的分层设计,硬件平台,硬件

3、抽象层,驱动程序,应用程序,负责程序的时间片分配,随硬件更改而更改,不随硬件更改而更改,通用程序,改变思路,一个源文件解决所有:可以,但可移植性和可读性不好。可以说把c程序做成一个文件的还停留在汇编程序设计的思路上,他只是换了种语言工具而已,而非改变了设计思路。 以后的系统会越来越复杂,使用成熟的代码等于站在巨人的肩膀上 从系统角度考虑问题:没有最好的,只有最适合的(不要迷信规格书),事实上很多系统工程师也不知道怎么做才是最好的 软件只是系统的一部分,但是是灵魂所在,尤其在涉及到控制算法的时候,设计控制器前需了解整机系统,控制板的控制目标:一定要弄清楚负载是什么,控制负载的电控元件是什么,此元

4、件的优缺点。如继电器、可控硅、比例阀等等 控制板的精度:如温度控制会同时涉及到采样和控制的精度问题 这样做是最可靠的方式吗? 这样做是对用户最来说是最方便的方式吗? 一定要注意回差问题:如通过水流量判断开关机,通过温度判断风机转速等等,设计思想,为8位单片机软件设计提供一个可参考的平台,程序设计人员按照此平台可以轻松,可靠地设计出高质量的产品 一些成熟的模块标准化,提供长时间测试没有问题的模块供大家调用 尽量做到硬件无关,当主芯片更改后,只需改动很少的部分即可以适应新的芯片系统。而且这些改动不会影响到系统的可靠性 提供一个可以检测软件代码编写是否符合设计规范的测试平台,举例:盖房子,本平台要提

5、供一个房子的框架结构(固定好是砖混结构),并定好门、窗、阳台的位置,但具体的内部装修并不固定,可由程序人员自由组合 同时提供多种门、窗及装修材料(模块)供程序人员使用,并且这些材料都是经过测试没有问题的,保证工程的质量 当地基改变后,只需动与地面相连的地方即可,上层全可以不动,模块划分原则:按文件划分,主芯片,与硬件有关的内容 (.h文件),设备驱动文件 LCD驱动,流程相关文件,设备驱动文件 按键检测,设备驱动文件 蜂鸣器驱动,硬件抽象层 (.h文件),与硬件有关的内容 (.h文件),主程序(main.c) (对下面的函数进行调用),与硬件相关 内容,包含与硬件相关的.h文件 .固定后不用修

6、改,如更换主芯片只需更改包含的.h文件,显示相关文件,按键处理相关文件,其他与硬件有关 的文件,通用函数文件,硬件无关通过函数与驱动文件相连,算法文件 包括滤波、控制算法,硬件抽象层的实现,Hardware.c文件:负责整个MCU的初始化,PWM输出,检测AD等函数的实现 举例:Hardware.c.h文件:负责与驱动程序的接口 举例:与EEPROM的接口 EEP_hardware.h 从上面可以看出,当更换芯片时,驱动程序的内容完全不动,只需更改EEP_hardware.h里的内容即可,程序初始化流程,开始 (Main),EEPROM中保存数据读取 (f_ReadEEPData),硬件SFR

7、初始化 (f_InitSFR),基本数据初始化 (f_InitData),系统自检 (f_SelfTest),主循环 While (1),软件预处理 (f_Predeal),检测跳线 (f_CheckJumper),注: 并不是所有的模块都是必须的 括号内的内容为模块名称; 软件预处理为一段延时,等待芯片复位后各端口均稳定下来;,主循环流程图,系统框图.doc,基本文件划分方式,Main.c: 主文件,程序的入口(注意并不一定是芯片复位后的入口),负责所有文件间的调度 Main.h: 主文件头文件,包含全局变量的定义,以及外部变量和外部函数的声明 Hardware.c:硬件相关文件,负责与硬件

8、相关的函数定义,如MCU的特殊寄存器定义模块(f_InitSFR),AD检测函数f_CheckADVaule(),PWM输出函数等 Io_define.h:IO口定义头文件 MainConst.h:常数定义文件 MainStruct.h:结构定义文件,包含可能用到的所有结构定义,不包含变量 通用函数CommFunc.c:与硬件无关的通用函数,如BCD码转16进制码等函数,基本文件划分方式,所有与中断、时序、算法有关的单独使用一个文件。如 LCD 6024驱动:和时序有关,负责根据规格书定义的时序驱动6024,主程序调用时即可以不需知道6024内部时序,直接将要显示的内容发送给接口函数即可 EE

9、PROM驱动:和时序有关 BUZZER驱动:单独做成一个文件提高可移植性 脉冲宽度或个数检测:如水流量脉冲检测,一般会涉及到滤波算法,故单独使用一个文件 风机控制:既使用了中断,又需要控制风机,会涉及到滤波算法和控制算法,必须单独一个文件 通讯:与时序有关,单独一个文件,与主程序只有一个缓冲区的接口,方便排错 按键检测:与算法相关,需要滤波,单独一个文件,在移植的时候会方便很多 温度检测:一般涉及到滤波算法,单独一个文件 控制算法:涉及到算法效率及控制性能,单独一个文件实现,各文件间的调用关系,Main.c,Hardware.c,EEPATM02.c,BuzBeep.c,ChkKey.c,HL

10、6024_Drv.c,CommFunc.c,EEP_hardware.h,BuzBeep.h,HL6024_hardware.h,MainStruct.h,MainConst.h,io_define.h,sfr_r82b.h,调用关系说明,所有的驱动程序只包含一个与硬件有关的.h文件,更改硬件时只更改此.h文件即可 所有驱动程序间没有任何的联系,但驱动程序可能会调用Hardware.c中的函数 CommFunc.c相当于一个标准库,其中的函数可由任何文件调用 MainStruct.h文件可以由任何文件包含 Hardware.c负责与硬件相关的操作 Io_define.h负责普通IO口的定义,可

11、由任何文件包含,主程序基本框架,main.c主程序框架中包含对各分文件的模块调用及系统基本流程的实现主时间中断函数也在主程序中实现Main.h中实现全局变量的定义在主程序里处理时间时必须保证主程序一次循环时间开销必须小于一个最基本的时间中断,即一个基本的时间节拍(所以基本时间节拍一般选择10ms)。注意需要精确时间的地方的处理方式,几个主要的变量,nSysState: 系统状态,其具体值在MainConst.h中定义,其值的变化表示了整个系统的状态变化过程 tError: 故障变量,结构变量,如果系统发生了故障则设置其中一个位为1,如果tError.byte的值不为0则表示有故障发生 tRel

12、ay: 继电器控制输出变量,在中间的过程中只修改此变量的值,在调用OutControl()函数的时候根据此变量的值对MCU端口进行输出,其他基本注意事项,缓冲区的设立:通讯发送和接收都需要设置连续的缓冲区,方便程序书写和调试 可以使用表格的方式尽量使用表格,可以使程序量大大减少,同时方便修改。需要在设计的阶段就考虑到。 节省RAM区的使用,因为C语言是以堆栈为基础的,因此一定要保留足够的堆栈大小,IO口定义文件,Io_define.h文件:负责基本输入输出IO口的定义举例:io_define.h如果硬件更改了IO口的位置,则只更改此文件即可,其他文件内容都不变,Const.h定义文件,Cons

13、t.h文件:负责常量的定义举例:MainConst.h此文件包含的是一些常量的定义,MainStruct.h定义文件,MainStruct.h文件:负责结构体的定义举例:MainStruct.h只包含定义,不包含具体变量的实现,也就是说,不为此文件分配任何RAM区,时间中断的处理,要求代码少,效率高 除了必须使用的扫描等功能,其他和时间有关的只是设置变量标志位,并不做任何处理,所有的处理均放在主程序中处理 必要时嵌入汇编实现 实现时注意优化代码,编译后使用反汇编程序来查看对应的汇编代码 注意有些芯片计时是不准确的,所以要有定时检测方法(可通过定时控制IO口输出之后通过示波器检测)举例:main.c,外部中断的处理,外部中断要考虑到干扰的影响,一般会有滤波措施 必要时嵌入汇编实现举例:CheckFlux.c,通信模块的处理,定义通信协议时必须有头码,有校验码 处理通信接收时必须有异常处理 以主从方式进行通信时注意从端无应答时的处理 因与时间有关,尽量使用中断来实现通信信号的输出和接收 调试速率的选择 CRC16和CRC32校验举例Uart.c,调试模块的使用,如果UART发送口没有被占用,建议将其用做调试监视使用 定期向UART口发送主要的变量数据,可通过连接到电脑显示曲线,通过曲线可看出当前数据的正确与否,适合于不能使用仿真器仿真的情况下,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号