软件(架构).doc_第1页
软件(架构).doc_第2页
软件(架构).doc_第3页
软件(架构).doc_第4页
软件(架构).doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二、PITE3960软件(架构)综述为实现多任务,系统使用了消息驱动方式,采用不可剥夺多任务机制(任务不能强行中止)。主函数流程: 图2-1 主函数流程(含消息循环)消息队列优先级:本架构任务切换是通过消息队列来实现的(如图2-3),保证了先触发先响应。系统将会维护多个消息队列,所有产生的消息都会被插入相应队列中。系统会依据队列优先级在队列中取出每一条消息,根据不同消息队列,而产生不同的消息,并将该消息发送给当前任务的消息处理函数。队列优先级如下:图2-2 消息队列优先级系统中使用的消息队列:Queue g_sutIntQueue; 中断消息队列(主要用于中断的切换)Queue g_sutSysQueue; 系统消息队列(主要用于各任务的切换)Queue g_sutRecv0Queue; UART0接收数据队列Queue g_sutTran0Queue; UART0发送数据队列Queue g_sutRecv1Queue; UART1接收数据队列Queue g_sutRecordQueue; 放电电池记录指针索引数据队列系统任务变量:unsigned char g_ucplay_back; 数据回放标志 0x0f:yes 0x00: no 任务的基本架构:任务由消息处理分支构成,根据分支语句执行不同的操作。每个任务都有自己的消息处理分支,任务的消息处理函数执行完成后,才能返回主流程,响应其它消息,所以对于耗时较多的任务应尽量精简,或拆分成多个任务。同时这种运行机制存在较大的局限性,目前适用于较小的应用平台。较大的应用中消息检查机制应做相应修改,避免消息检测循环消耗太多的时间和资源。任务中必须要包含的是PITE_DefTaskProc()函数,用于响应输入操作。其余消息视具体任务添加。图2-3 任务消息循环及系统消息结构任务的消息结构:message :是从当前消息队列中获得的消息值,消息值如图4所示。para、para1 、para1 :是本消息附带的参数。系统中的消息:图2-4系统中的消息系统软件模块组织结构:图2-5 软件模块框图系统中定义的任务:PITE_RET 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 TaskCalibrationZero(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 *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 TaskBackLight(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 TaskGeneralTest(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),用于扫描触摸屏。如有有效触摸屏按下将直接执行区域响应函数,具体说明见附录2、触摸屏坐标说明。默认消息处理函数:图2-6 默认消息处理 默认的消息处理函数将负责处理那些任务中不处理消息。PITE_RET PITE_DefTaskProc(PITE_MESSAGE *Msg) 默认处理函数,包含时钟扫描、按键处理和串口数据收发void RtcShow (void); 默认RTC处理void Scom485QueueDataCheck(void); 485通信串口接收中断处理void RadioQueueDataCheck (void); 无线通信串口接收中断处理void BatteryDischargeSendData2PC (void); 串口发送数据处理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 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像素,故ADS7846采用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轴坐标变换程序代码为: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)矩形区域内均认为是触摸该区域有效,就可进行进一步的操作。程序中屏幕中每个显示有效的区域点都按照结构AREA的大小连续存储在屏幕区域(坐标)列表g_stScrList中,当有有效的坐标产生时,通过调用FindScrList()函数来判断该坐标是否在g_stScrList存储的有效区域内,再做具体操作。3、文件管理部分说明文件管理采用简单FAT文件系统。文件系统由以下3部分组成:1:文件分配表区(FAT);2:文件目录表区(FDT);3:数据区。(1):文件分配表存放Flash存储器上所有区块的占用与空闲情况以及每个文件的存储连接结构。本Flash文件系统中使用15位FAT,最大可管理2的15次方(32768)个存储单元。(2) 文件目录表紧跟在FAT表之后,存放F1ash文件系统中每一个文件的名字、长度、属性、生成的时间,大小以及该文件的存储链在文件分配表中的入口。(3)数据区域用于存放数据。本Flash文件系统中,数据块分配的单位是512字节。注意: 单次写入数据最大为256KB。图6-7 Flash文件系统5、任务添加说明图6-8 任务的基本结构1、任务结构从主程序消息循环及消息切换中可知,本系统中包含消息队列,一个任务基本的框架包含有分支语句判断消息类型,并调用相应消息处理函数,不同的消息由任务的不同部分进行处理。 处理新建任务消息处理函数(例如VoltagePreciseInitiate ()); 按键消息处理函数; DSP中断消息处理函数(例如VoltagePreciseDspIntResponse ()); RTC中断消息处理函数(例如VoltagePreciseRtcResponse ()); 默认消息处理函数 (例如PITE_DefTaskProc ());当然可根据实际需要增加或减少,例如PITE_RET TaskDisplayScreen(PITE_MESSAGE *Msg)中就没有按键消息处理函数。需要注意的是按键消息处理函数,仅在menu.c中有保留(MenuResponse ()),其余的在本架构中被触摸屏区域处理函数替换。任务对外只提供一个接口函数。2、任务添加、在Msg.c中定义任务的显示菜单(如果需要显示为菜单)。参考菜单结构的命名(例如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.scf中需设置加载域和运行域地址为 0x0002000,如果不是使用USB更新而是使用ISP更新,则需设置为0x0000000。在拷贝的工程目录中找到*.mcp工程文件并打开,之后先在ADS工程生成目标选择 DebugInChipFlash,接着点击工程设置图表按钮参考下文进行工程的地址设置、输出文件设置、编译选项等设置,之后再点击同步修改日期图表按钮检查文件更新情况(是否需要编译),检查工程中每个文件的修改日期,若发现有更新,则在Touch栏标记,最后点击编译连接图表按钮完成编译连接。ADS编译环境编译器设置中, Target Settings设置Linker下拉列表中选择ARM Linker,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 中设置输出文件名为3980B.HEX(内容自定,最好

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论