ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:1.45MB ,
资源ID:23647509      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23647509.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件架构.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件架构.docx

1、软件架构二、PITE3960软件(架构)综述为实现多任务,系统使用了消息驱动方式,采用不可剥夺多任务机制(任务不能强行中止)。主函数流程:图2-1 主函数流程(含消息循环)消息队列优先级:本架构任务切换是通过消息队列来实现的(如图2-3),保证了先触发先响应。系统将会维护多个消息队列,所有产生的消息都会被插入相应队列中。系统会依据队列优先级在队列中取出每一条消息,根据不同消息队列,而产生不同的消息,并将该消息发送给当前任务的消息处理函数。队列优先级如下:图2-2 消息队列优先级系统中使用的消息队列:Queue g_sutIntQueue; 中断消息队列(主要用于中断的切换)Queue g_su

2、tSysQueue; 系统消息队列(主要用于各任务的切换)Queue g_sutRecv0Queue; UART0接收数据队列Queue g_sutTran0Queue; UART0发送数据队列Queue g_sutRecv1Queue; UART1接收数据队列Queue g_sutRecordQueue; 放电电池记录指针索引数据队列系统任务变量:unsigned char g_ucplay_back; 数据回放标志 0x0f:yes 0x00: no 任务的基本架构:任务由消息处理分支构成,根据分支语句执行不同的操作。每个任务都有自己的消息处理分支,任务的消息处理函数执行完成后,才能返回主

3、流程,响应其它消息,所以对于耗时较多的任务应尽量精简,或拆分成多个任务。同时这种运行机制存在较大的局限性,目前适用于较小的应用平台。较大的应用中消息检查机制应做相应修改,避免消息检测循环消耗太多的时间和资源。任务中必须要包含的是PITE_DefTaskProc()函数,用于响应输入操作。其余消息视具体任务添加。图2-3 任务消息循环及系统消息结构任务的消息结构:message :是从当前消息队列中获得的消息值,消息值如图4所示。para、para1 、para1 :是本消息附带的参数。系统中的消息:图2-4系统中的消息系统软件模块组织结构:图2-5 软件模块框图系统中定义的任务:PITE_RE

4、T MenuMain(PPITE_MESSAGE Msg); 主菜单PITE_RET MenuService(PPITE_MESSAGE Msg); 系统管理菜单PITE_RET MenuDataMenage(PPITE_MESSAGE Msg); 数据管理菜单PITE_RET MenuSysSet(PITE_MESSAGE *Msg); 系统设置菜单PITE_RET MenuRevise(PITE_MESSAGE *Msg); 计量校正菜单PITE_RET MenuRadioSetup(PITE_MESSAGE *Msg); 放电参数设置菜单PITE_RET TaskCalibrationZ

5、ero(PITE_MESSAGE *Msg) 零点校正PITE_RET TaskCalibrationCoef(PITE_MESSAGE *Msg) 增益校正PITE_RET TaskCalibrationSensor(PITE_MESSAGE *Msg); 传感器选择PITE_RET TaskCaliLoadFactoryPara(PITE_MESSAGE *Msg); 载入缺省值(厂值)PITE_RET TaskCaliSetFactoryPara(PITE_MESSAGE *Msg); 设置缺省值(厂值)PITE_RET TaskCaliSetDefault(PITE_MESSAGE *

6、Msg); 设置缺省值PITE_RET TaskCalibrationLogin(PITE_MESSAGE *Msg); 触摸屏校准PITE_RET TaskCaliSetupRadioBoxId(PITE_MESSAGE *Msg); 分机盒设置ID编号PITE_RET TaskCaliSetupRadioBoxCoef(PITE_MESSAGE *Msg); 分机盒校正PITE_RET TaskDateSet(PITE_MESSAGE *Msg); 设置日期时间 PITE_RET TaskVersionShow(PITE_MESSAGE *Msg); 软件版本声明PITE_RET Task

7、BackLight(PITE_MESSAGE *Msg); 设置背光PITE_RET TaskUpdateFont(PITE_MESSAGE *Msg); 字库更新PITE_RET TaskGetPassword(PITE_MESSAGE *Msg); 设置密码任务PITE_RET TaskFileList(PITE_MESSAGE *Msg); 数据管理任务PITE_RET TaskFlashFrame(PITE_MESSAGE *Msg); 数据清除任务PITE_RET TaskDisplayScreen(PITE_MESSAGE *Msg); 屏幕数据回放任务PITE_RET TaskG

8、eneralTest(PITE_MESSAGE *Msg); 综合测试任务PITE_RET TaskVoltagePrecise(PITE_MESSAGE *Msg) 稳压测试任务PITE_RET TaskCurrentPrecise(PITE_MESSAGE *Msg) 稳流测试任务PITE_RET TaskRipple(PITE_MESSAGE *Msg) 纹波测试任务PITE_RET TaskBatteryDischarge(PITE_MESSAGE *Msg) 电池放电任务扫描触摸屏: 由定时器T0产生一个定时器消息(INT_TIMER),用于扫描触摸屏。如有有效触摸屏按下将直接执行区

9、域响应函数,具体说明见附录2、触摸屏坐标说明。默认消息处理函数:图2-6 默认消息处理 默认的消息处理函数将负责处理那些任务中不处理消息。PITE_RET PITE_DefTaskProc(PITE_MESSAGE *Msg) 默认处理函数,包含时钟扫描、按键处理和串口数据收发void RtcShow (void); 默认RTC处理void Scom485QueueDataCheck(void); 485通信串口接收中断处理void RadioQueueDataCheck (void); 无线通信串口接收中断处理void BatteryDischargeSendData2PC (void);

10、串口发送数据处理void FAT_FileMsg(void); FAT消息处理void USB_Msg (void); USB消息处理综上所述,本系统是一个伪多任务操作系统,编程者了解后可以自定义消息和任务流程,实现特定的功能,但要注意该架构的使用中,消息处理函数一定要清晰。关于任务的添加见附录5、任务添加说明。六、附录1、系统资源分配说明 图6-1 片上FLASH空间分配 图6-2 片上RAM空间分配 图6-3 片外RAM空间分配 图6-4片外FLASH空间分配 图6-5片外EEPROM空间分配LPC2214内部共有256K FLASHROM和16K RAM,外部扩展512KRAM、16M

11、FLASHROM和256KEEPROM。程序空间的分配如图6-1所示,前面8K(08192)存储的是用于更新主程序(8192之后248K程序存储空间)的代码,8K之后的248K程序存储空间存储的是应用程序代码。数据空间的分配如图6-2、图6-3、图6-4、图6-5所示。片上16K RAM主要用于堆栈空间。片外512KRAM用于存储系统变量,数据队列,各种测量数据。片外256K的EEPROMROM用于存储LCD对比度、管理员标志、触摸屏坐标基准值、BMP数字名、计量校正参数、电流传感器参数、监测设置参数和FDT首地址。2、触摸屏坐标说明(1)、坐标的获取由于LCD屏大小为320240像素,故AD

12、S7846采用12位A/D转换,可精确到X或Y方向上的1/4096。触摸屏中每一点经过ADS7846的转换后都会获得一组(X和Y)A/D值(触摸屏坐标),该值经过坐标变换后可转变为LCD屏坐标,转换过程如下:计算A/D值在触摸屏坐标中的偏移值OFFSET;:乘上LCD坐标系相对于触摸屏坐标系的转换比率系数K;公式如下:式中:A/D:实际采样A/D值;LCD_MAX:LCD屏坐标最大值(对于X轴为319,对于Y轴为239);LCD_MIN:LCD屏坐标最小值(对于X轴为0,对于Y轴为0);TOUCH_MAX:触摸屏坐标(A/D值)最大值;TOUCH_MIN:触摸屏坐标(A/D值)最小值;X轴坐标

13、变换程序代码为:TOUCH32 AD2X(TOUCH32 adx) TOUCH32 r;r = adx - g_sScreenMinMaxCOORD_X.Min;r *= TOUCH_XSIZE - 1;return (r / (g_sScreenMinMaxCOORD_X.Max - g_sScreenMinMaxCOORD_X.Min);(2)、坐标的响应 图6-6 触摸屏坐标参考上图,屏幕中有一区域AREA,(X1,Y1)是其左上角坐标,(X2,Y2)是右下角坐标。在点击屏幕时,触点只要在(X1,Y1)和(X2,Y2)矩形区域内均认为是触摸该区域有效,就可进行进一步的操作。程序中屏幕中每

14、个显示有效的区域点都按照结构AREA的大小连续存储在屏幕区域(坐标)列表g_stScrList中,当有有效的坐标产生时,通过调用FindScrList()函数来判断该坐标是否在g_stScrList存储的有效区域内,再做具体操作。3、文件管理部分说明文件管理采用简单FAT文件系统。文件系统由以下3部分组成:1:文件分配表区(FAT);2:文件目录表区(FDT);3:数据区。(1):文件分配表存放Flash存储器上所有区块的占用与空闲情况以及每个文件的存储连接结构。本Flash文件系统中使用15位FAT,最大可管理2的15次方(32768)个存储单元。(2) 文件目录表紧跟在FAT表之后,存放F

15、1ash文件系统中每一个文件的名字、长度、属性、生成的时间,大小以及该文件的存储链在文件分配表中的入口。(3)数据区域用于存放数据。本Flash文件系统中,数据块分配的单位是512字节。注意: 单次写入数据最大为256KB。图6-7 Flash文件系统5、任务添加说明图6-8 任务的基本结构1、任务结构从主程序消息循环及消息切换中可知,本系统中包含消息队列,一个任务基本的框架包含有分支语句判断消息类型,并调用相应消息处理函数,不同的消息由任务的不同部分进行处理。1 处理新建任务消息处理函数(例如VoltagePreciseInitiate ());2 按键消息处理函数;3 DSP中断消息处理函

16、数(例如VoltagePreciseDspIntResponse ());4 RTC中断消息处理函数(例如VoltagePreciseRtcResponse ());5 默认消息处理函数 (例如PITE_DefTaskProc ());当然可根据实际需要增加或减少,例如PITE_RET TaskDisplayScreen(PITE_MESSAGE *Msg)中就没有按键消息处理函数。需要注意的是按键消息处理函数,仅在menu.c中有保留(MenuResponse ()),其余的在本架构中被触摸屏区域处理函数替换。任务对外只提供一个接口函数。2、任务添加、在Msg.c中定义任务的显示菜单(如果需

17、要显示为菜单)。参考菜单结构的命名(例如l_sutMenuSysMain和l_apucMenuMain)、在具体任务C文件中定义任务的接口函数。例如PITE_RET TaskVoltagePrecise(PITE_MESSAGE *Msg).、在具体任务H文件中声明任务的接口函数。 例如PITE_RET TaskVoltagePrecise(PITE_MESSAGE *Msg); 、在需要切换任务的地方调用函数PITE_StartNewTask()来切换任务。 例如 PITE_StartNewTask(TaskVoltagePrecise);6、ADS编译设置说明在分散加载文件mem_c.sc

18、f中需设置加载域和运行域地址为 0x0002000,如果不是使用USB更新而是使用ISP更新,则需设置为0x0000000。在拷贝的工程目录中找到*.mcp工程文件并打开,之后先在ADS工程生成目标选择 DebugInChipFlash,接着点击工程设置图表按钮参考下文进行工程的地址设置、输出文件设置、编译选项等设置,之后再点击同步修改日期图表按钮检查文件更新情况(是否需要编译),检查工程中每个文件的修改日期,若发现有更新,则在Touch栏标记,最后点击编译连接图表按钮完成编译连接。ADS编译环境编译器设置中, Target Settings设置Linker下拉列表中选择ARM Linker,

19、Post-Linker下拉列表中选择ARM FromELF。图 6-9 ADS编译环境编译器设置中,ARM Linker 设置Output选项卡中Linktype单选框选择Scatterd,Scatter编辑框中输入mem_c.scf文件所在目录。图6-10ADS编译环境编译器设置中,ARM Linker 设置Option选项卡中Image entry point 参数需设置为 0x0002000图6-11DS编译环境编译器设置中,ARM fromELF 设置,Output formatz下拉列表中选择Intel 32 bit Hex,Output file name 中设置输出文件名为398

20、0B.HEX(内容自定,最好与应用程序相关)图6-127、汉字显示说明 1、汉字取摸以汉字中为例,使用 宋体12,字体对应的点阵为:宽x高=16x16。生成字模时,横向取模,对点阵中有笔画的取1,无笔画(背景)的取0,每行可生成2个字节数据,16x16点阵可生成32字节数据。 图6-13 中字点阵图 图6-14 中字数字化 图6-15中字字模2、汉字显示在GB2312-80标准中每个汉字(图形符号)采用双字节表示,第一个字节的范围从1-87(区码),0xA1-0xF7(机内码),共87种,第二个字节的范围从1-94(位码),0xA1-0xFE(机内码),共94种,利用这两个字节共可定义出87*

21、94=8178种汉字,实际共用6763个汉字。if 0xA1 = 高字节 = 0xF7: 则是 GB2312 字符在GBK编码(不是国家标准,而只是规范)兼容GB2312字符集及其编码,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。第一字节的值在 0x810xFE 之间,第二字节的值在 0x400xFE,除去0x7F一线。if 0x81 = 高字节 = 0xFE and (0x40 = 低字节 = 0x7E or 0x7E = 低字节 = 0xFE):则是 GBK字符。在Windows95/98/NT/2000 (简体中)中使用的都是GBK字符集。字符显示是按从左到右,从上到下一点一点的在显示缓冲区显示,主要代码说明如下: 字符显示流程如下图所示:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1