版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《嵌入式系统》课程设计说明书电子时钟系统院部:学生姓名: 指导教师:职称专业:班级:学 号:I湖南工学院嵌入式系统课程设计课题任务书指导教师学生姓名课题名称电子时钟系统设计内容及任务一、目标在GEC210开发板上设计一个基于QT的电子时钟系统来显示当前的系统时间。二、任务根据控制要求,明确设计任务,拟定设计方案与进度计划,运用所学的理论知识,进行电子时钟系统原理设计、硬件系统设计、软件系统设计、创新设计,提高理论知识工程应用能力、系统调试能力、分析问题与解决问题的能力。主要内容包括:嵌入式交叉开发环境搭建。Linux操作系统的移植。根据需求确定外围模块设计并完成相应驱动开发。应用程序原理及框架设计。Linux下应用程序编写及移植。系统总体功能调试。编写设计说明书。三、要求1.本系统显示结果示例如下:2.显示的时间为开发板当前的系统时间,显示的结果随着系统时间变化而变化。主要参考资料教研室意见教研室主任:(签字)年月日摘要嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等Browser。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。嵌入式技术已成为信息产业中发展最快、应用最广的计算机技术之一,并被广泛应用于网络通信、消费电子、医疗电子、工业控制和交通系统等领域。本次设计采用QT程序开发框架开发的模拟时钟程序,使用Linux系统到嵌入式终端移植和交叉编译环境搭建,最终成功实现了在嵌入式终端的运行。关键词:嵌入式系统;QT;模拟时钟;Linux系统目录1绪论 11.1设计背景 21.2设计目的和意义 22嵌入式Linux系统 22.1嵌入式Linux概念 22.2嵌入式Linux组成 23Qt工具 33.1Qt简介 33.2Qt优点 34模拟时钟的设计 44.1代码的编写 44.2代码的调试与运行 45模拟时钟到开发板的下载 65.1交叉编译环境的构建 75.2模拟时钟到开发板的下载运行 7结论 10参考文献 11致谢 12附录 13PAGE181绪论嵌入式Linux操作系统在广泛和深入的应用于各个领域,应用的技术也越来越复杂。而随着城市信息化和行业信息化的持续深入,嵌入式技术已成为信息产业中发展最快、应用最广的计算机技术之一,并被广泛应用于网络通信、消费电子、医疗电子、工业控制和交通系统等领域。嵌入式Linux开始采用较为复杂的图形用户界面。QT以其强大的功能,良好的可移植性成为一种被广泛使用的GUI系统。于是嵌入式操作系统及其相应图形用户界面的不断发展,嵌入式软件的开发显得越来越重要。本次设计模拟时钟能够以简洁的外观为用户提供时间信息成为了系统中的重要组成部分,在基于QT的嵌入式系统中模拟时钟具有深刻的实用价值。1.1设计背景源代码开放的Linux搭建的嵌入式操作系统由于其强大的网络功能和低成本,近年来得到了越来越多的应用。其能够提供全功能的桌面计算,定制非常方便并且支持大多数嵌入式系统上使用的芯片。在嵌入式Linux操作系统上使用一个功能完备的轻量级、高性能、高可靠、可配置的GUI系统成为可行的解决方案。全过程自动化产品制造、大范围电子商务活动、高度协同科学实验以及现在化家庭起居,为嵌入式产品造就了崭新而巨大的商机。日趋增长的功能密度、灵活的网络链接、轻便的移动应用和多媒体的信息处理对嵌入式系统软件技术提出了新的挑战。1.2设计目的和意义随着近年来计算机技术的迅速发展,当新硬件、新技术出现时,计算机的体系结构、指令系统和操作系统都可能发生相应的改变,这势必会导致一部风应用在新环境下无法正常运行。如果舍弃原有软件重新开发,将会耗费大量的人力和财力,而浪费了许多成熟的软件成果。而QT在源代码级上实现了跨平台特性,极大地支持了跨平台通用软件的开发。QT可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,充分实现了程序的跨平台运行。这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。模拟时钟需要编写代码来实现它的功能,然后对代码进行编译运行,检查是否达到了预期的效果。2嵌入式Linux系统2.1嵌入式Linux简介嵌入式Linux是将标准Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。它以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一,不仅可以与各种传统的商业操作系统分庭抗争,在新兴的嵌入式操作系统领域内也获得了飞速发展。嵌入式系统的发展方向是与目标密切相关的嵌入性能、操控能力与控制的可靠性。嵌入式操作系统从它的产生到现在经历了几个阶段,全入市系统是以应用为中心的计算机技术为基础并且软硬件是可裁剪的适用于对功能、可靠性、成本、功耗等有严格要求的专用计算机系统嵌入式系统最典型的特点是与人们的日常生活紧密相关,任何一个普通人都可能拥有各种运用了嵌入式技术的电子产品。各种新型嵌入式设备在数量上已经远远超过了通用计算机。2.2嵌入式Linux的组成一个最小的嵌入式系统基本组成为:一个用作引导的可用设施(工具);一个具备内存管理,进程管理和定时器服务的Linux微内核;一个初始进程;硬件的驱动程序;一个或几个应用进程以提供必要的应用功效。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。硬件层:硬件层包含嵌入式微处理器、存储器(SDRAM、ROM、Flash等)、通用设备接口和I/O接口(A/D、D/A、I/O等)。在意嵌入式处理器基础上添加电源电路、时钟电路和存储电路就构成了一个嵌入式核心控制模块。其中操作系统和应用程序多都可以固化在ROM中。中间层:硬件层与软件层之间为中间层,也称为硬件抽象层(HardwareAbstractLayer,HAL)或者板级支持包(BoardSupportPackage,BSP),它半系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无需关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。系统软件层:系统软件层由实时多任务操作系统(Real-timeOperationSystem,RTOS)、文件系统、图形用户接口(GraphicUserInterface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。3Qt工具3.1Qt简介Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它给应用程序开发者提供了一套功能齐全的进行艺术级的图形用户界面程序设计所需的功能。Qt很容易扩展,并且允许真正地组件编程。基本上Qt和XWindow上的GTK,Openwin,Motif等图形界面库和Windows平台上的ATL,CL,OWL,VMFC是非常类似的。QtCreator
主要是为了帮助新
Qt
用户更快速入门并运行项目,还可提高有经验的
Qt
开发人员的工作效率。QtCreator包括项目生成向导、高级的C++代码编辑器、浏览文件及类的工具、集成了QtDesigner、QtAssistant、QtLinguist、图形化的GDB调试前端,集成qmake构建工具等。3.2Qt优点Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signal/slots的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。Qt有丰富的API包括多达250个以上的C++类,还是提供基于模板的collections,serialization,file,I/Odevice,directorymanagement,date/time类,还包括正则表达式的处理功能。支持2D/3D图形渲染、OpenGL、大量的文档开发、XML支持和实现本地界面与Web内容的无缝集成。4模拟时钟的设计设计要求指针式的表盘为原型,并且圆周上有分布均匀的12个刻度,钟面上有长度不同的指针,即时针、分针、秒针,间隔一秒更新一次时间。显示的时间为开发板当前的系统时间,显示的结果随着系统时间变化而变化。4.1代码的编写模拟时钟每一个模块的功能是在cpp文件中实现的,h文件是类、槽、函数、变量的定义,main主函数用来调用现实,头文件和主函数的代码如下:myclock.h文件#ifndefMYCLOCK_H#defineMYCLOCK_H#include<QWidget>#include<QPainter>#include<QPaintEvent>#include<QTime>#include<QTimer>#include<qmath.h>namespaceUi{classmyclock;}classmyclock:publicQWidget{Q_OBJECTpublic:explicitmyclock(QWidget*parent=0);~myclock();protected:voidpaintEvent(QPaintEvent*);private:Ui::myclock*ui;QTimer*timer;inti;};#endif//MYCLOCK_Hmain主函数:main.cpp#include"myclock.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);myclockw;w.show();returna.exec();}模拟时钟的走时为调用系统时间,用定时器每一秒更新一次draw函数,在表盘上显示为秒针跳动一格,由于始终与系统时间保持一致,所以完全可以作为直接的时间显示工具。实现的代码如下:myclock::myclock(QWidget*parent):QWidget(parent),ui(newUi::myclock){ui->setupUi(this);this->resize(350,350);timer=newQTimer(this);//定时器connect(timer,SIGNAL(timeout()),this,SLOT(update()));timer->start(1000);}myclock::~myclock(){deleteui;}时钟的指针绘制也是根据定义的坐标用画笔画出需要的指针形状,其中绘制指针的实现代码如下:QPenhourpen;//时针的画笔hourpen.setWidth(4);//设置画笔宽度//hourpen.setColor(Qt::blue);//设置画笔颜色mypainter.setPen(hourpen);mypainter.save();//mypainter.rotate(30.0*((time.hour()+time.minute()/60.0)));mypainter.drawConvexPolygon(hourHand,3);//mypainter.drawLine(0,0,0,-80);mypainter.restore();QPenminutepen;//分针的画笔minutepen.setWidth(3);minutepen.setColor(Qt::yellow);//设置画笔颜色mypainter.setPen(minutepen);mypainter.save();mypainter.rotate(6.0*(time.minute()+time.second()/60.0));mypainter.drawConvexPolygon(minuteHand,3);//mypainter.drawLine(0,0,0,-100);mypainter.restore();QPensecondpen;//秒针的画笔secondpen.setWidth(1);secondpen.setColor(Qt::blue);//设置画笔颜色4.2代码的调试和运行通过以上步骤代码编写已经完成,在Windows系统下的QT运行。通过调试发现没有发现错误和警告,就会出现如下的到模拟时钟的界面,如图1所示。图1模拟时钟界面5模拟时钟到开发板的移植5.1交叉编译环境的构建在开发板上移植Linux系统之前,必须确保已经安装了USB驱动,并把开发版设置为NORFlash启动。系统更新和安装完毕后设置为NandFlash启动。然后对NandFlash进行分区,安装bootloader,移植内核文件,移植文件系统。做完这些就可以进行交叉编译环境构建。在Linux平台下,要为开发板编译内核,图形界面Qtopia,bootloader,还有其他一些英勇程序,均需要交叉编译工具链。(1)安装gcc编译工具用于arm平台程序的编译工具,arm-linux-gcc,arm-linux-g++等,把程序源码包复制到用户目录下面解压设置环境变量,保存设置最后在终端输入以下命令:arm-linux-gcc-v等待出现信息成功安装。4.2模拟时钟到开发板的下载与运行交叉编译好的程序到开发板的下载用到串口,用串口线连接好开发板和电脑,串口使用COM3。接通电源,启动开发板,登录系统,在SecureCRT中点击连接。图2串口连接设置进入后弹出一个对话框,在对话框中输入一下几条命令:(1)pwd(2)ls(3)cdaaa(4)ls(5)sourceqtconf.sh(6)./myclock输入以上命令后可以在SecureCRT中看到如下信息:图3输入命令结果输入以上几条命令后,开发板上也就出现了本次设计的模拟时钟界面。开发板上结果如图4所示。图4开发板显示结果由图4可以看出,开发板上的时钟与系统时间一致,并且随系统时间的变化而变化,说明设计成功。在下载运行时会遇到这些问题:调用驱动时要保证实际驱动名字与应用程序名字相同;通过串口显示的数据是乱码,原因是波特率设置的不正确,导致双方数据交互出现错误;开发板的系统上电后,不能重新启动,究其原因是内核、根目录系统或者bootloader没有正确的烧写,重新烧写后正常启动;程序下载到开发板上不能正确运行,提示缺少某个动态库,将缺少的库文件从Qt的安装包拷贝到lib目录下完成后可正常启动。结论本次课程设计实现了一种基于Qt的模拟时钟的开发过程,实现了预期的功能。编写好的模拟时钟代码在Linux系统、Windows系统下都能编译并运行成功,还讲交叉编译好的程序下载到开发板上运行,冲锋体现了Qt的跨平台特性。为了Windows系统下编写编译的Qt程序能够在嵌入式Linux环境里运行,需要在搭建交叉编译环境时,要配置环境变量,设计编译参数,任何一个依赖库的确实或编译参数的疏忽都可能导致交叉编译不成功。交叉编译好的Qt程序到开发板移植时,嵌入式Linux中要有Qt程序运行的环境,移植时往往缺少很多库文件导致不能运行,需要不断测试并在交叉编译环境中找到相应的库文件下载到开发板。由于个人能力以及时间的限制,此次设计最终能实现了一些基本功能,但是还有很大的扩展性,比如时间设置等功能。希望在今后的学习中可以学到更多完善自己。
参考文献
致谢首先我要感谢我的老师在课程设计上给予我的指导,提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学这段时间以来,在老师的耐心指导下,我终于完成了本次的课程设计。附录程序清单工程程序:###ProjectcreatedbyQtCreator2016-11-21T04:30:07##QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=myclockTEMPLATE=appSOURCES+=main.cpp\myclock.cppHEADERS+=myclock.hFORMS+=myclock.ui头文件程序:myclock.h#ifndefMYCLOCK_H#defineMYCLOCK_H#include<QWidget>#include<QPainter>#include<QPaintEvent>#include<QTime>#include<QTimer>#include<qmath.h>namespaceUi{classmyclock;}classmyclock:publicQWidget{Q_OBJECTpublic:explicitmyclock(QWidget*parent=0);~myclock();protected:voidpaintEvent(QPaintEvent*);private:Ui::myclock*ui;QTimer*timer;inti;};#endif//MYCLOCK_H源文件程序:main.cpp#include"myclock.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);myclockw;w.show();returna.exec();}myclock.cpp#include"myclock.h"#include"ui_myclock.h"myclock::myclock(QWidget*parent):QWidget(parent),ui(newUi::myclock){ui->setupUi(this);this->resize(350,350);timer=newQTimer(this);//定时器connect(timer,SIGNAL(timeout()),this,SLOT(update()));timer->start(1000);}myclock::~myclock(){deleteui;}voidmyclock::paintEvent(QPaintEvent*){QTimetime=QTime::currentTime();//获取系统时间QPaintermypainter(this);//定义画家mypainter.setRenderHint(QPainter::Antialiasing);//平滑设置staticconstQPointhourHand[3]={QPoint(4,4),QPoint(-4,4),QPoint(0,-80)};//时针staticconstQPointminuteHand[3]={QPoint(4,4),QPoint(-4,4),QPoint(0,-100)};//分针staticconstQPointsecondHand[4]={QPoint(5,5),QPoint(0,30),QPoint(-5,5),QPoint(0,-120)};//秒针//mypainter.translate(this->width()/100,this->height()/100);//坐标平移QPenpen;//定义圆画笔pen.setWidth(5);//设置画笔宽度pen.setColor(Qt::blue);//设置画笔颜色mypainter.translate(170,170);//将(0,0)坐标平移到(170,170)的位置mypainter.setPen(pen);mypainter.drawEllipse(-150,-150,300,300);//画圆QPenrul;//刻度的画笔mypainter.setPen(rul);mypainter.save();//保存原有状态for(inti=0;i<60;++i){if(i%5==0){mypainter.drawLine(150,0,135,0);}mypainter.drawLine(150,0,145,0);mypainter.rotate(6.0);}mypainter.restore();//恢复坐标QPenhourpen;//时针的画笔hourpen.setWidth(4);//设置画笔宽度//hourpen.setColor(Qt::blue);//设置画笔颜色mypainter.setPen(hourpen);mypainter.save();//mypainter.rotate(30.0*((time.hour()+time.minute()/60.0)));mypainter.drawConvexPolygon(hourHand,3);//mypainter.drawLine(0,0,0,-80);mypainter.restore();QPenminutepen;//分针的画笔minutepen.setWidth(3);minutepen.setColor(Qt::yellow);//设置画笔颜色mypainter.setPen(minutepen);mypainter.save();mypainter.rotate(6.0*(time.minute()+time.second()/60.0));mypainter.drawConvexPolygon(minuteHand,3);//mypainter.drawLine(0,0,0,-100);mypainter.restore();QPensecondpen;//秒针的画笔secondpen.setWidth(1);secondpen.setColor(Qt::blue);//设置画笔颜色mypainter.setPen(secondpen);mypainter.save();mypainter.rotate(6.0*time.second());mypainter.drawConvexPolygon(secondHand,4);//mypainter.drawLine(0,0,0,-120);mypainter.restore();//画数字mypainter.save();//保存原有状态for(inti=1;i<13;i++){QStringnum=QString::number(i);//mypainter.rotate(30.0);//旋转30度//mypainter.drawText(0,-120,num);mypainter.save();mypainter.rotate(i*30.0);mypainter.translate(0,-125);mypainter.rotate(-i*30.0);mypainter.drawText(-4,0,num);mypainter.restore();}mypainter.restore();//恢复坐标}基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部煤质考核管理制度
- 内部询价管理制度
- 内部银行管理制度流程
- 电力工程管理部负责人面试全解全析
- 企业债券投资经理的职责与技能要求
- 企业内部项目管理与战略目标的结合实践案例分析
- 再担保公司内部管理制度
- 农服公司内部管理制度
- 制毒化学品内部管理制度
- 智能家居领域区域经理工作实践与心得
- GB/T 44731-2024科技成果评估规范
- 医学教材 《狂犬病暴露预防处置工作规范(2023年版)》解读课件
- 马戏团表演行业分析报告及未来三年行业发展报告
- 新部编版六年级语文下册一单元考试卷附答案
- 部编版五年级道德与法治下册全册必背知识点
- 《销售人员培训教材》课件
- 初中音乐八年级上册(简谱) ☆御风万里
- 樱与刀:日本民间故事集
- 项目一 新能源汽车维护作业前场地要求与准备
- GB/T 42756.1-2023卡及身份识别安全设备无触点接近式对象第1部分:物理特性
- 中国精神障碍分类与诊断标准第3版
评论
0/150
提交评论