欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统综合实训说明书-基于ARM-Cortex-M0定时预警器.doc

    • 资源ID:86286777       资源大小:1,001.50KB        全文页数:27页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统综合实训说明书-基于ARM-Cortex-M0定时预警器.doc

    各专业全套优秀毕业设计图纸编号: 嵌入式系统综合实训说明书题 目:基于ARM Cortex-M0定时预警器 院(系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 黄彬 学 号: 11002 指导教师: 晋良念 2015年 1 月 11 日摘 要随着社会和科技的发展,人类的各种预警器都有了好大的发展,如有温度预警器、压力预警器、定时预警器等等,总之只有你想不到的,没有没研究出来的预警器。而定时预警器也有了好大的应用,如它可以作为闹钟、又可以做为秒表等等,它集时间、日期、星期功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。本文介绍了基于arm-m0嵌入式的开发平台设计的多功能的定时预警器的思路和技巧。在keil开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。仿真和验证的结果表明,该设计方法切实可行,该定时预警器可以实现调时定时播放警报声和点亮警报灯功能具有一定的实际应用性。关键字:定时预警器;调时定时;放警报声;点亮警报灯;keil;嵌入式AbstractWith the development of society and science and technology, human beings have all sorts of warning device of the very big development, such as temperature warning device, pressure warning device, timing, warning device, etc., in short, only you think not not not developed early warning device.Timing and warning device that has had a lot of applications, such as it can serve as an alarm clock, and can be as a stopwatch, and so on, it set time, date, week functions in one, is easy to read, display, intuitive and functional diversity, circuit is simple, and many other advantages, in line with the development trend of electronic instruments and meters, has a broad market prospect.This paper introduces the development platform design based on arm - m0 multi-function timing of early warning of ideas and skills.Compilation and simulation in the keil development environment, the design program and debug operation condition of the validator.Simulation and verification results show that the proposed design method is feasible, the timing when warning device can realize the function of timing alarm sound and light warning lamp has a certain practical applications.Key WordsTiming warning device;and the timing;alarm; light lamp; keil; embedded目 录1 绪论···················································11.1 嵌入式的发展····················································11.2 ARM的发展······················································12 NUC140开发板实时时钟RTC介绍··························13 总体设计框图 ··········································23.1 NUC140VE3AN芯片管脚介绍········································33.2 复位和时钟电路设计··············································33.3 预警提醒电路设计················································34 设计的步骤和过程·······································44.1 初始化··························································44.2 计时模块························································44.3 校时模块························································54.4、设定闹钟模块···················································54.5 显示模块设计····················································54.6 蜂鸣器和LED灯模块设计··········································55 仿真实现···············································55.1 软件调试························································65.2 仿真分析························································66 总结 ···················································7谢 辞 ···················································8参考文献 ·················································9附录 原程序 ·············································101 绪论1.1 嵌入式的发展嵌入式开发是一项系统工程,要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持。目前很多厂商已经充分考虑到这一点,在主推系统的同时,将开发环境也作为重点推广。比如三星、ARM在推广Arm7,Arm9芯片的同时还提供开发板和板级支持包(BSP)。网络化、信息化的要求随着因特网技术的成熟、带宽的提高日益提高,使得以往单一功能的设备如电话、手机、冰箱、微波炉等功能不再单一,结构更加复杂。这就要求芯片设计厂商在芯片上集成更多的功能,为了满足应用功能的升级,设计师们一方面采用更强大的嵌入式处理器如32位、64位RISC芯片或信号处理器DSP增强处理能力,同时增加功能接口。1.2 ARM的发展ARM的Jazelle技术使Java加速得到比基于软件的Ja ,va虚拟机(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增强的16位和32位算术运算能力,提高了性能和灵活性。ARM还提供两个前沿特性来辅助带深嵌入处理器的高集成SoC器件的调试,它们是嵌入式ICE-RT逻辑和嵌入式跟踪宏核(ETMS)系列。arm的特点:体积小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。2 NUC140开发板实时时钟RTC介绍实时时钟(RTC)控制器用于记录实时时间及日历功能。RTC 的时钟源由外部 32.768 kHz 晶振提供,管脚为 X32I 和 X32O(请参考管脚描述)或者管脚 X32I 外接 32.768 kHz 振荡器输出信号源。RTC 控制器提供时间信息(秒、分、时)在时间载入寄存器 (TLR) 以及通过日历载入寄存器 (CLR) 提供日历信息(日、月、年)。时间信息由 BCD 码格式进行表示。该控制器也提供闹钟功能,用户可以预先在时间闹钟寄存器 (TAR) 中设置闹钟时间、日历闹钟寄存器 (CAR) 中设置闹钟日期来进行闹铃设置。RTC 控制器支持周期时间节拍和闹钟匹配中断。通过设定TTR (TTR2:0),周期中断有8个周期选项 1/128, 1/64, 1/32, 1/16, 1/8, 1/4, 1/2 及1秒。当闹钟中断使能 (RIER.AIER=1) 的情况下,RTC 计数器内的值 TLR 和 CLR 分别等于闹钟设定时间寄存器 TAR 和 CAR时,中断标志 (RIIR.AIF) 将被置,并产生闹钟中断请求。如果唤醒芯片功能被使能 (TWKE (TTR3)=1),那么 RTC 时间与闹钟匹配时能够将芯片从掉电模式中唤醒。RTC 模块框图1如下:图1 RTC 模块框图3 总体设计框图 本电路主要由3大部分电路组成。ARM最小系统电路、时钟显示电路和警报电路本设计用LED灯指示。其中ATM最小系统主要由复位电路和时钟电路组成。在该设计中闹钟提醒由LED灯代替当定时时间到的话,LED灯亮延时设定的时间后自动关闭。3.1 NUC140VE3AN芯片管脚介绍图2 NUC140VE3AN芯片管脚3.2 复位和时钟电路设计外部采用 32.768 kHz 晶振使能控制,而当缺省的时钟源时为外部 424 MHz 晶振。32.768KHZ是一个标准的频率,因为32768是2的15次方。当把32.768k晶振的信号连到一个16位的计数器时,第16位数字每变化一次,正好就是1秒钟时间,这样就可以计时了。3.3 预警提醒电路设计本设计的预警提醒电路采用蜂鸣器,并且为了调试方便用实验板上的发光二极管LED1LED4指示,其与实验板对应接口为PC0PC3,高电平为亮,低电平为灭。如图3所示。图3 led预警图4 设计的步骤和过程4.1 初始化1、晶振的选择初始化:SYSCLK->PWRCON.XTL32K_EN = 1;SYSCLK->PWRCON.XTL12M_EN = 1;2、 LCD初始化:init_LCD();LED清零:clear_LCD();3、 RTC初始化:init_RTC();首先,启用和选择RTC时钟源;然后启动和解锁RTC模块;再然后启动时间和日历设置;再然后启动预警时间和日历设置。UNLOCKREG();SYSCLK->PWRCON.XTL32K_EN = 1;SYSCLK->APBCLK.RTC_EN =1;START_RTC();RTC->TSSR.HR24_HR12 =1;/Set 24hour modeset_CLR(1,4,1,2,2,2);set_TLR(1,5,2,0,0,0);set_CAR(1,4,1,2,2,2);set_TAR(1,5,2,0,0,4);RTC->RIER.AIER = 1;RTC->RIER.TIER = 1;NVIC_EnableIRQ(RTC_IRQn);4.2 计时模块通过使用rtc的时钟芯片,中断函数来实现,每秒调用一次中断,然后每调用一次秒数加一。RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。RTC的技术器是一个32位的计数器,使用32.768khz的外部晶振。4.3 校时模块首先,读取其的时钟时刻年、月、日、时、分、秒。然后通过按键1来选择要调整的具体的年月日时分,再然后通过按键2使其加一,而通过按键3来使其减一,再然后通过按键9来实现退出时钟调整函数。4.4 设定闹钟模块同理,通过按键4选择来调整的是具体的预警时间:时分,再然后通过按键2使其加一,而通过按键3来使其减一,再然后通过按键9来实现退出时钟调整函数。4.5 显示模块设计void print_Line(int8_t line, char text)int8_t i;for (i=0;i<strlen(text);i+) printC(i*8,line*16,texti);通过其函数来实现吧要显示的英文数字写进去寄存器中,进而通过调用使其显示出来。4.6 蜂鸣器和LED灯模块设计当inpw(&RTC->RIIR) & 0x1为真则led等亮并发出预警声音。if(inpw(&RTC->RIIR) & 0x1) print_Line(3, "RTC Alarm !");DrvGPIO_ClrBit(E_GPC, 12); / output Low to turn on LEDDrvGPIO_ClrBit(E_GPC, 13); / output Low to turn on LEDDrvGPIO_ClrBit(E_GPC, 14);DrvGPIO_ClrBit(E_GPC, 15);DrvGPIO_ClrBit(E_GPB,11);Alarm_E = 0;outpw(&RTC->RIIR,1);5 仿真实现5.1 软件调试本课题子KEIL软件进行代码调试。Keil uVision2是美国Keil Software公司出品的51系列单片机C语言软件开发系统,使用接近于传统C语言的语法来开发。与汇编相比,C语言在结构行、功能上、可维护行、可读性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期。首先打开KEIL软件,运行Keil uVision2 IDE软件。在KEIL下建立项目保存在一个文件中,然后选择所要用的单片机类型这里选择Atmel公司的AT89C51。然后添加已经写好的汇编程序,给项目添加程序文件。在编译、连接前注意选择Project菜单下的Options for TargetTarget1命令进行设置,选择Output选项卡,在Create Executable选项前打钩,选择生成可执行文件HEX文件,便于以后硬件仿真。如下图4所示:图4 编程软件key5.2 仿真分析通过硬件和软件的调试,按键1能准确的选择调节时间,而按键2和按键3是准确的调整时间加一或减一,而按键4是准确的调整预警时间,而按键8是关闭警报,按键9是确定调整退出。总之能准确的能够实现了定时预警效果。rm0开发板测试如图5所示。图5 arm0开发板测试图6 总结从设计开始到最终完成设计,一点一滴积累,在实践中成长,在挫折中前进。在设计的前期,我系统的学习了arm0的相关资料,掌握了arm0外部电路的合理设计以及各个引脚的功能。这一步一步的不断努力,让我学到了很多在书本上学不到的东西,尤其是在处理故障和电路兼容方面的考虑,都使我受益颇多。在这里课程设计中,我深深感受到实践的重要性,它是检验我们所学知识的有效途径。没有付出,就没有回报,通过为期五周的准备与学习是我完成设计的前提。在这过程中也遇到过一些难题,经过自身的努力以及向同学请教,我学到很多,也解决了很多问题。本次设计的题目为基于arm0的定时预警器设计,通过五周努力,可以顺利实现的功能有:在LCD上显示时间,并且能通过按键实现设置时间的调节、闹钟的调节和开关等控制最后,我深刻感受到要做好一个课程设计,就必须做到:在设计程序之前,对所需资料的综合整理,有效的挑选资料;要明确目标,整理思路;合理设计出系统所必须的流程图,做好充分的心里准备。这次设计是对我所学arm一书的综合考验,使我能查漏补缺,复习课本知识,加深理解记忆,所以每一步我都用心去做。谢 辞感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在设计和制作的过程中,我们深切的体会到,实践是理论运用的最好检验和团队合作的重要性,这一次的设计是对我们所学知识的一次综合性检测,无论是动手能力还是理论知识运用能力都得到了提高,同时加深了我们对网络资源的认识,大大提高了查阅资料的效率,使我们有充足的时间投入到电路设计当中。在做作品的日子里得到了指导教师的悉心指导,在此向我们的指导教师致以诚挚的谢意。并且感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。参考文献1 高吉祥.电子技术基础实验与课程设计M.电子工业出版社,20022 赵俊.ARM Cortext-M0 从这里开始.北京航空航天大学出版社,20123 温子琪.ARM Cortex-M0微控制器原理与实践.北京航空航天大学出版社,20134 黄建华.ARM Cortex 嵌入式系统开发教程.西安电子科技大学出版社,20125 刘同法.ARM CortexM0最小系统应用与C程序编写.北京航空航天大学出版社,20146 张庆双.电子元器件的选用与检测M.机械工业出版社,2003附录 原程序#include <stdio.h>#include <string.h> #include "NUC1xx.h"#include "Scankey.h"#include "LCD.h"#include "GPIO.h"static uint8_t Alarm_E=1;uint8_t temp=0x0,ret = 0;uint8_t *arr7 = "Mon","Tue","Wed","Thu","Fri","Sat","Sun"/ RTC register accessvoid set_TLR (int32_t a,int32_t b,int32_t c,int32_t d,int32_t e,int32_t f)outpw(&RTC->TLR, a<<20|b<<16|c<<12|d<<8|e<<4|f) ;void set_CLR (int32_t a,int32_t b,int32_t c,int32_t d,int32_t e,int32_t f)outpw(&RTC->CLR, a<<20|b<<16|c<<12|d<<8|e<<4|f) ;void set_TAR(int32_t a,int32_t b,int32_t c,int32_t d,int32_t e,int32_t f)outpw(&RTC->TAR, a<<20|b<<16|c<<12|d<<8|e<<4|f);void set_CAR (int32_t a,int32_t b,int32_t c,int32_t d,int32_t e,int32_t f)outpw(&RTC->CAR, a<<20|b<<16|c<<12|d<<8|e<<4|f);/ start Real-Time Clockvoid START_RTC(void) while(1) RTC->INIR = 0xa5eb1357;if(inpw(&RTC->INIR)=1) break; while(1) RTC->AER.AER = 0xA965; if(inpw(&RTC->AER)&0x10000)/ AER bit break; / Initialize RTCvoid init_RTC(void)UNLOCKREG();/* Step 1. Enable and Select RTC clock source */ /步骤1。启用和选择RTC时钟源SYSCLK->PWRCON.XTL32K_EN = 1;/Enable 32Khz for RTC clock source 使能外部 32.768 kHz 晶振SYSCLK->APBCLK.RTC_EN =1;/Enable RTC clock source 使能 RTC 时钟 /* Step 2. Initiate and unlock RTC module */ /步骤2。启动和解锁RTC模块 START_RTC();/* Step 3. Initiate Time and Calendar setting */ /步骤3。启动时间和日历设置RTC->TSSR.HR24_HR12 =1;/Set 24hour mode/Set time and calendar for loading register, Calendar劤 09/1/19, Time劤 13:20:00set_CLR(1,4,1,2,2,2);set_TLR(1,5,2,0,0,0);/* Step 4. Set alarm interrupt */Set time and calendar for alarm register , Calendar劤 09/1/19, Time劤 13:30:00set_CAR(1,4,1,2,2,2);set_TAR(1,5,2,0,0,4);/Enable alarm interruptRTC->RIER.AIER = 1;RTC->RIER.TIER = 1;NVIC_EnableIRQ(RTC_IRQn);void fount(char TEXT316,int32_t a,int32_t b,int32_t c,int32_t d,int32_t e,int32_t f,int32_t p)sprintf(TEXT3+6,"%x",a);sprintf(TEXT3+7,"%x",b);sprintf(TEXT3+9,"%x",c);sprintf(TEXT3+10,"%x",d);sprintf(TEXT3+12,"%x",e);sprintf(TEXT3+13,"%x",f);TEXT38 = ':'TEXT311= ':' print_Line(p,TEXT3);void set_CLR_TLR(int32_t temp,int32_t key)uint32_t clock,calendar;int32_t a, b, c, d, e, f;int32_t a2, b2, c2, d2, e2, f2;char TEXT320 = "STA : "char TEXT216 = "SCA : "/char TEXT116 = "key : "clock=inpw(&RTC->TLR) & 0xFFFFFF;calendar=inpw(&RTC->CLR) & 0xFFFFFF;f = clock & 0xF;e = (clock>>4) & 0xF; d = (clock>>8) & 0xF;c = (clock>>12) & 0xF; b = (clock>>16) & 0xF; a = (clock>>20) & 0xF;f2 = calendar & 0xF;e2 = (calendar>>4) & 0xF; d2= (calendar>>8) & 0xF;c2 = (calendar>>12) & 0xF; b2 = (calendar>>16) & 0xF; a2 = (calendar>>20) & 0xF;if(key = 1) if(temp%5) = 1&& a = 2&& b = 3) a = 0x0;b = 0x0;else if(temp%5) = 1&& b = 9) a += 0x1; b = 0x0;else if(temp%5) = 1) b += 0x1;if(temp%5) = 0&& c = 5&& d = 9) c = 0x0;d = 0x0;else if(temp%5) = 0&& d = 9) c += 0x1;d = 0x0;else if(temp%5) = 0) d += 0x1;if(temp%5) = 2&& e2 = 3&& f2 = 0)e2 = 0x0;f2 = 0x1;else if(temp%5) = 2&& f2 = 9)e2 += 0x1;f2 = 0x0;else if(temp%5) = 2)f2 += 0x1;if(temp%5) = 3&& c2 = 1&& d2 = 2)c2 = 0x0;d2 = 0x1;else if(temp%5) = 3&& d2 = 9)c2 += 0x1;d2 = 0x0;else if(temp%5) = 3)d2 += 0x1;if(temp%5) = 4&& a2 = 9&& b2 = 9)a2 = 0x0;b2 = 0x0;else if(temp%5) = 4&& b2 = 9)a2 += 0x1;b2 = 0x0;else if(temp%5) = 4)b2 += 0x1;else if(key = -1)if(temp%5) = 1&& a = 0&&b = 0) a = 0x2;b = 0x3;else if(temp%5) = 1&&b = 0) a -= 0x1;b = 0x9;else if(temp%5) = 1) b -= 0x1;if(temp%5) = 0&& c = 0&& d = 0) c = 0x5;d = 0x9;else if(temp%5) = 0&& d = 0) c -= 0x1;d = 0x9;else if(temp%5) = 0) d -= 0x1;if(temp%5) = 2&& e2 = 0&& f2 = 1)e2 = 0x3;f2 = 0x0;else if(temp%5) = 2&& f2 = 0)e2 -= 0x1;f2 = 0x9;else if(temp%5) = 2)f2 -= 0x1;if(temp%5) = 3&& c2 = 0&& d2 = 1)c2 = 0x1;d2 = 0x2;else if(temp%5) = 3&& d2 = 0)c2 -= 0x1;d2 = 0x9;else if(temp%5) = 3)d2 -= 0x1;if(temp%5) = 4&& a2 = 0&& b2 = 0)a2 = 0x9;b2 = 0x9;else if(temp%5) = 4&& b2 = 0)a2 -= 0x1;b2 = 0x9;else if(temp%5) = 4)b2 -= 0x1;ret = (a2-1)*3600+(b2-4)*360+(c2-1)*300+(d2-2)*30+(e2-2)*10+(f2-2);ret = ret%7;if(ret < 0)ret = ret +7;START_RTC();RTC->TSSR.HR24_HR12 = 1;set_TLR(a,b,c,d,e,f);set_CLR(a2,b2,c2,d2,e2,f2);set_CAR(a2,b2,c2,d2,e2,f2);fount(TEXT3,a,b,c,d,e,f,1);fount(TEXT2,a2,b2,c2,d2,e2,f2,0);/ RTC Interrupt Handlervoid RTC_IRQHandler(void)int32_t a, b, c, d, e, f;int32_t key = 0,but,set_RIIR;int8_t keyin,keyjia;uint32_t clock,calendar;char TEXT_RTC18="RTC : "char TEXT_CLR20="CLR : "char TEXT316 = "key : "char TEXT116 = "STA : "char week16 = "week : "calendar=inpw(&RTC->TLR) & 0xFFFFFF;d= (calendar>>8) & 0xF;c = (calendar>>12) & 0xF;b = (calendar>>16) & 0xF; a = (calendar>>20) & 0xF;set_RIIR = inpw(&RTC->RIIR); if(keyin = ScanKey() = 1) temp = 0;while(1)but = 0;while(keyjia = ScanKey() != 0)but = keyjia;sprintf(TEXT3+6,"%d",keyjia); print_Line(2,TEXT3);if(but = 1) temp+;else if(but = 2)key = 1;set_CLR_TLR(temp,key);else if(but = 3)key = -1;set_CLR_TLR(temp,key);else if(but = 9) break;/sprintf(TEXT3+10,"%s",arrret);/print_Line(2, TEXT3); if(keyin = ScanKey() = 4)temp = 0x1;while(1)but = 0;while(keyjia = ScanKey() != 0)but = keyjia;sprintf(TEXT3+6,"%d",keyjia); print_Line(2,TEXT3);if(but = 4) temp = temp + 0x1;else if(but = 2) if(temp%2) = 1&& a = 2&& b = 3) a = 0x0;b = 0x0;else if(temp%2) = 1&& b = 9) a += 0x1;b = 0x0;else if(temp%2) = 1) b = b + 0x1;if(temp%2) = 0&& c = 5&& d = 9) c = 0x0;d = 0x0;else if(temp%2) = 0&& d = 9) c += 0x1;d = 0x0;else if(temp%2) = 0) d = d + 0x1;else if(but = 3)if(temp%2) = 1) &&(a = 0)&& (b = 0)

    注意事项

    本文(嵌入式系统综合实训说明书-基于ARM-Cortex-M0定时预警器.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开