stm32 怎么让stm32串口发送数据数更快

USARTcommunity STM32f103ZE 实现双串口通信。一个接收 发送,同时也能动态给另外 设置相关 Com Port 编程 238万源代码下载-
&文件名称: USARTcommunity
& & & & &&]
&&所属分类:
&&开发工具: C-C++
&&文件大小: 5410 KB
&&上传时间:
&&下载次数: 2
&&提 供 者:
&详细说明:STM32f103ZE 实现双串口通信。一个接收一个发送,同时也能动态给另外一个串口设置相关参数-STM32f103ZE dual serial communication. One receiving a transmission, but also can dynamically to another serial port settings related parameters
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&USART_通信匹配&&..............\BaseDrive&&..............\.........\GPIO_BMSwitch.c&&..............\.........\GPIO_BMSwitch.h&&..............\.........\GPIO_Data.c&&..............\.........\GPIO_Data.h&&..............\.........\GPIO_LED.c&&..............\.........\GPIO_LED.h&&..............\.........\Systick.c&&..............\.........\Systick.h&&..............\.........\usart_interrupt.c&&..............\.........\usart_interrupt.h&&..............\JLinkLog.txt&&..............\JLinkSettings.ini&&..............\Libraries&&..............\.........\CMSIS&&..............\.........\.....\CM3&&..............\.........\.....\...\CoreSupport&&..............\.........\.....\...\...........\core_cm3.c&&..............\.........\.....\...\...........\core_cm3.h&&..............\.........\.....\...\DeviceSupport&&..............\.........\.....\...\.............\ST&&..............\.........\.....\...\.............\..\STM32F10x&&..............\.........\.....\...\.............\..\.........\Release_Notes.html&&..............\.........\.....\...\.............\..\.........\startup&&..............\.........\.....\...\.............\..\.........\.......\arm&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_cl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_hd.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_hd_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_ld.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_ld_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_md.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_md_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_xl.s&&..............\.........\.....\...\.............\..\.........\.......\gcc_ride7&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_cl.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_hd.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_hd_vl.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_ld.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_ld_vl.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_md.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_md_vl.s&&..............\.........\.....\...\.............\..\.........\.......\.........\startup_stm32f10x_xl.s&&..............\.........\.....\...\.............\..\.........\.......\iar&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_cl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_hd.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_hd_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_ld.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_ld_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_md.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_md_vl.s&&..............\.........\.....\...\.............\..\.........\.......\...\startup_stm32f10x_xl.s&&..............\.........\.....\...\.............\..\.........\.......\TrueSTUDIO&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_cl.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_hd.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_hd_vl.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_ld.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_ld_vl.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_md.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_md_vl.s&&..............\.........\.....\...\.............\..\.........\.......\..........\startup_stm32f10x_xl.s&&..............\.........\.....\...\.............\..\.........\stm32f10x.h&&..............\.........\.....\...\.............\..\.........\system_stm32f10x.c&&..............\.........\.....\...\.............\..\.........\system_stm32f10x.h&&..............\.........\.....\CMSIS debug support.htm&&..............\.........\.....\CMSIS_changes.htm&&..............\.........\.....\Documentation&&..............\.........\.....\.............\CMSIS_Core.htm&&..............\.........\.....\License.doc&&..............\.........\STM32F10x_StdPeriph_Driver&&..............\.........\..........................\inc&&..............\.........\..........................\...\misc.h&&..............\.........\..........................\...\stm32f10x_adc.h&&..............\.........\..........................\...\stm32f10x_bkp.h&&..............\.........\..........................\...\stm32f10x_can.h&&..............\.........\..........................\...\stm32f10x_cec.h&&..............\.........\..........................\...\stm32f10x_crc.h&&..............\.........\..........................\...\stm32f10x_dac.h&&..............\.........\..........................\...\stm32f10x_dbgmcu.h&&..............\.........\..........................\...\stm32f10x_dma.h&&..............\.........\..........................\...\stm32f10x_exti.h&&..............\.........\..........................\...\stm32f10x_flash.h&&..............\.........\..........................\...\stm32f10x_fsmc.h&&..............\.........\..........................\...\stm32f10x_gpio.h&&..............\.........\..........................\...\stm32f10x_i2c.h&&..............\.........\..........................\...\stm32f10x_iwdg.h&&..............\.........\..........................\...\stm32f10x_pwr.h&&..............\.........\..........................\...\stm32f10x_rcc.h&&..............\.........\..........................\...\stm32f10x_rtc.h&&..............\.........\..........................\...\stm32f10x_sdio.h&&..............\.........\..........................\...\stm32f10x_spi.h&&..............\.........\..........................\...\stm32f10x_tim.h&&..............\.........\..........................\...\stm32f10x_usart.h&&..............\.........\..........................\...\stm32f10x_wwdg.h&&..............\.........\..........................\Release_Notes.html&&..............\.........\..........................\src&&..............\.........\..........................\...\misc.c&&..............\.........\..........................\...\stm32f10x_adc.c&&..............\.........\..........................\...\stm32f10x_bkp.c&&..............\.........\..........................\...\stm32f10x_can.c
&近期下载过的用户:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - stm32f103 usart1 usart2 实现发送数据,双串口STM32 usb虚拟串口 最大速度可以达到多少 波特率可以设置到多少?
有着方面的朋友 告诉一下 先谢谢了。。
没人回答 自己顶一个吧
这个没用过,但是为了lz的头像,顶一下
也帮顶下。最近在用,拿官方的例子改的,用的不放心啊
去掉协议的消耗的话,估计也就512K左右。
记得不用设波特率的,波特率在这里没有意义~
回复【4楼】aleyn 煮茶村长
去掉协议的消耗的话,估计也就512k左右。
-----------------------------------------------------------------------
哦 是 512K BYTE/S 这么理解吗?
回复【5楼】alasika
记得不用设波特率的,波特率在这里没有意义~
-----------------------------------------------------------------------
嗯 是这个样子 但是现在 要做一个东西 需要通过USB 下载图片 数据到 外部flash里 不知道 做成虚拟串口这个是否可以?
还要是做成 上位机 然后加USB驱动 +STM32设备USB 批传送的方式???
回复【7楼】liyanlong55 紫川秀_MISS
-----------------------------------------------------------------------
个人感觉都可以实现,但虚拟串口速度可能会慢,看你的需求了
这个虚拟串口是不用设置波特率的,速度我测试能达到极限800K字节/s。
我前些时间研究过USB的HID类和CDC类,结论是USB1.1虚拟串口的速度很快,PC端用起来很简单甚至不需要专门的驱动(用系统默认驱动),就可以简单的达到600~800K字节/S 差不多相当于串口5~7M波特率,而且稳定可靠(几乎没有误码),当然这一切是在你两边程序充分发挥USB批量传输的优势的基础上,不然也就10~50K字节/S。
& & 用虚拟串口传输图片非常合适。
回复【10楼】loohoo0302
& & 我前些时间研究过usb的hid类和cdc类,结论是usb1.1虚拟串口的速度很快,pc端用起来很简单甚至不需要专门的驱动(用系统默认驱动),就可以简单的达到600~800k字节/s 差不多相当于串口5~7m波特率,而且稳定可靠(几乎没有误码),当然这一切是在你两边程序充分发挥usb批量传输的优势的基础上,不然也就10~50k字节/s。
& & 用虚拟串口传输图片非常合适。
-----------------------------------------------------------------------
非常感谢 哥们可以加个QQ 好好交流一下吗?
虚拟串口 上位机是否可以想真实串口那样做个上位机 然后发送数据。
STM32这边 就转换到USB 接口这边 接收和发送数据。
我虚心请教 还请求loohoo0302 多多告诉一下。
可否 给我一改过的简单程序呢&&先谢谢了。
回复【9楼】qidaimengxing
这个虚拟串口是不用设置波特率的,速度我测试能达到极限800k字节/s。
-----------------------------------------------------------------------
虚拟串口不用设置波特率 那我想问一下 那么上位机如果要发送数据 那波特率位 不是没有用了吗 关于这点还是不清楚
而且上位机波特率最大 才 115200bps&&换算一下 打死也不可能 达到800K字节/S
可以帮我解答一下 谢谢了。
自己在顶一下。。。
回复【12楼】liyanlong55 紫川秀_MISS
回复【9楼】qidaimengxing&&
这个虚拟串口是不用设置波特率的,速度我测试能达到极限800k字节/s。
-----------------------------------------------------------------------
虚拟串口不用设置波特率 那我想问一下 那么上位机如果要发送数据 那波特率位 不是没有用了吗 关于这点还是不清楚
而且上位机波特率最大 才 115200bps&&换算一下 打死也不可能 达到800k字节/s&&
可以帮我解答一下 谢谢了。
-----------------------------------------------------------------------
谁跟你说“上位机波特率最大 才 115200bps ”?难道是你猜的?
回复【14楼】alasika
回复【12楼】liyanlong55 紫川秀_miss
回复【9楼】qidaimengxing& &
这个虚拟串口是不用设置波特率的,速度我测试能达到极限800k字节/s。&&
-----------------------------------------------------------------------&&
虚拟串口不用设置波特率 那我想问一下 那么上位机如果要发送数据 那波特率位 不是没有用了吗 关于这点还是不清楚&&
而且上位机波特率最大 才 115200bps&&换算一下 打死也不可能 达到800k字节/s& &
可以帮我解答一下 谢谢了。
-----------------------------------------------------------------------
谁跟你说“上位机波特率最大 才 115200bps ”?难道是你猜的?
-----------------------------------------------------------------------
115200确实不是最大&&最多我用过921600的
但就目前的基本串口调试助手 最大也就115200
哪还有没有更大波特率的调试助手
还请老兄 赐教。
回复【15楼】liyanlong55 紫川秀_MISS
-----------------------------------------------------------------------
如果波特率受到软件限制了,你可以自己写一个;
首先得保证你的PC的串口芯片是否能胜任,芯片也会有限制的吧,但通常瓶颈不在这。
回复【16楼】alasika
回复【15楼】liyanlong55 紫川秀_miss
-----------------------------------------------------------------------
如果波特率受到软件限制了,你可以自己写一个;
首先得保证你的pc的串口芯片是否能胜任,芯片也会有限制的吧,但通常瓶颈不在这。
-----------------------------------------------------------------------
恩 非常感谢你的回答 也受益匪浅,,,,
其实我最关心的一个问题是 这样的 通过上位机PC 往STM32发送大量数据(通过虚拟串口,把波特率调高)
还有另外的一个问题就是 STM32往 PC 发送数据 这个时候他是怎么判定数据通信的速率的 前面的朋友说过这个虚拟串口是不用设置波特率的
我还是不明白 能详细的解释一下吗 非常感谢了。
STM32向PC发送的是USB协议的数据包,跟串口没有一毛钱的关系。。。
PC端的USB接口收到USB协议的数据包后,由驱动程序来解包并放入操作系统的串口缓冲区里,这样,串口助手类的工具就能够从缓冲区里读到数据,串口助手就认为是有 uart数据到来了。
我刚才说的,是指PC的uart受到串口助手的波特率限制时如何摆脱这个限制,跟usb没关系。
回复【17楼】liyanlong55 紫川秀_MISS
-----------------------------------------------------------------------
另外,头像不错。
回复【18楼】alasika
stm32向pc发送的是usb协议的数据包,跟串口没有一毛钱的关系。。。
pc端的usb接口收到usb协议的数据包后,由驱动程序来解包并放入操作系统的串口缓冲区里,这样,串口助手类的工具就能够从缓冲区里读到数据,串口助手就认为是有 uart数据到来了。
我刚才说的,是指pc的uart受到串口助手的波特率限制时如何摆脱这个限制,跟usb没关系。
-----------------------------------------------------------------------
恩 非常感谢你的回答 。帮助很大,很多东西如果原理大框 不清楚 做起来束手束脚的&&
一直困扰我的问题 就是这个&&“由驱动程序解包 然后放到串口缓冲区里。”一直以为这个虚拟串口还是跟真实的串口一样 要根据波特率一位 一位传输速率呢& &
这也就解决了我一个一直以来的疑问: 虚拟串口走 USB协议,最后通过驱动程序把数据放到串口的缓存里。
alasika&&非常感谢。
回复【19楼】alasika
-----------------------------------------------------------------------
回复【9楼】qidaimengxing
-----------------------------------------------------------------------
对了还有一个问题。 上位机给STM32 发送数据的速度最大能达到多少。这个上位机是不是要跟 波特率有很大的关系了。
因为上位机如果速度不够快 下位机再快 也是限制你速度的根本原因了。
我现在要做的 的从上位机发 下位机收 这个速度要快。
而不是& && &&&从 下位机往上位机传 。
回复【21楼】liyanlong55 紫川秀_MISS
-----------------------------------------------------------------------
你可以自己动手测试一下,别人也都是自己测试出来的。
只能说跟波特率依然没有关系,瓶颈在1.windows驱动的好坏 2.stm32对usb处理能力 3.你所用的传输线质量 4.stm32拿到数据后是否要做耗时的工作 5.pc主板所用usb芯片的质量 6.软件组织是否合理 等
回复【22楼】alasika
回复【21楼】liyanlong55 紫川秀_miss
-----------------------------------------------------------------------
你可以自己动手测试一下,别人也都是自己测试出来的。
只能说跟波特率依然没有关系,瓶颈在1.windows驱动的好坏 2.stm32对usb处理能力 3.你所用的传输线质量 4.stm32拿到数据后是否要做耗时的工作 5.pc主板所用usb芯片的质量 6.软件组织是否合理 等
-----------------------------------------------------------------------
恩 现在的情况是&&我使用ST的虚拟串口 测试程序 上位机用的串口调试助手&&波特率设置115200&&下位机STM32&&然后通过STM32连接USB到另外 一台PC上 用另外一个串口调试助手观看发送的数据。
我发了一个6M 的MP3文件 那边接收数据与发送数据相同 说明没有丢包。 时间很长 速度大约10KB/S&&跟普通的串口发送数据速度一样。。。
驱动程序使用ST官方的驱动。而且还有一点。如果最后那个波特率 设置的不是115200 接收的数据就是不对。。。
先谢谢你说了这么多。。能加个QQ交流一下吗&&我的.
回复【23楼】liyanlong55 紫川秀_MISS
-----------------------------------------------------------------------&&
我使用ST的虚拟串口 测试程序 上位机用的串口调试助手&&波特率设置115200&&下位机STM32&&然后通过STM32连接USB到另外 一台PC上 用另外一个串口调试助手观看发送的数据。
-----------------------------------------------------------------------
你这样测试的话,得到的速度只会是两个串口中最慢的那个,特别是调试助手所连接的真实串口。
而这样的话测试不到真实的虚拟串口速度。
最好还是用STM32接收后,用LCD显示出接到的数据个数和CRC,这样才能得到比较真实的速度。
USB 下载图片 数据到 外部flash
--------------------
你的是什么flash,是spi flash还是nand flash
如果是spi flash,官方有一个usb dfu程序支持直接写spi flash
有上下位机源码
如果是nand,你只要将spi的读写改成nand就可以了
还要是做成 上位机 然后加USB驱动 +STM32设备USB 批传送的方式???
----------------------
如果你不想做上位机,则可将你的usb设备虚拟成一个u盘,把你的图片bin文件直接往里面丢就行了
我做过一个hmi 彩屏人机界面&&就是这么搞的。
回复【24楼】aleyn 煮茶村长
回复【23楼】liyanlong55 紫川秀_miss
-----------------------------------------------------------------------& &
我使用st的虚拟串口 测试程序 上位机用的串口调试助手&&波特率设置115200&&下位机stm32&&然后通过stm32连接usb到另外 一台pc上 用另外一个串口调试助手观看发送的数据。
-----------------------------------------------------------------------
你这样测试的话,得到的速度只会是两个串口中最慢的那个,特别是调试助手所连接的真实串口。
而这样的话测试不到真实的虚拟串口速度。
最好还是用stm32接收后,用lcd显示出接到的数据个数和crc,这样才能得到比较真实的速度。
-----------------------------------------------------------------------
嗯 你的建议就是上位机一直发送 下位机 只接受个数 然后再算速度 中间 不做数据处理。关键有一点我还是没有搞清楚 以前我自己也写过上位机 用的VB.NET 写的串口
比如你一个上位机 使用115200&&波特率&&一个起始位一个停止位 8位数据&&这样得到的数据传送速度 为
%=92160b&&有效位
920字节=11.5KBYTES/S 传送速度已经固定。 我想把这个速度 提升到个200KB/S以上 这个要怎么做。
回复【25楼】liu_xf 新发
usb 下载图片 数据到 外部flash
--------------------
你的是什么flash,是spi flash还是nand flash
如果是spi flash,官方有一个usb dfu程序支持直接写spi flash
有上下位机源码
如果是nand,你只要将spi的读写改成nand就可以了
-----------------------------------------------------------------------
回复【26楼】liu_xf 新发
还要是做成 上位机 然后加usb驱动 +stm32设备usb 批传送的方式???&&
----------------------
如果你不想做上位机,则可将你的usb设备虚拟成一个u盘,把你的图片bin文件直接往里面丢就行了
我做过一个hmi 彩屏人机界面&&就是这么搞的。
-----------------------------------------------------------------------
你好。你的方案我也在思考 现在发现不会驱动编写,上位机编程又不怎么精通做起来真不好搞 这个星期准备加强这方面的知识。
首先DFU 我也研究过过了,他可以给STM32单片机升级程序。使用一个USB接口就可以做到。--这块掠过。
然后可以给SPI的flash下数据 或者是NAND FLASH 下数据 有这个上位机ST&&我也看了资料。
现在关键是 我用STM32与FPGA通信(并口)& & USB---》STM32----&FPGA----&FLASH(九块)(我也不知道怎么想的以前的人 为什么不用STM32---&FLASH 下数据还要转一个FPGA,当然他们可能有自己的考虑) 图片很多(都是电视台标)
UFU好像就要够呛。
另外你说的 做成一个虚拟U盘 这个可以考虑一下是否可行。 星期六 日 周一3天放假 死磕了
东西很简单 只是我自己能力的问题 。。。USB 啊&&哎。
在STM32开发板里加个串口转USB芯片做不是很方便嘛。
这里,需要说明一下的就是。
虚拟串口里面,不存在波特率的概念,虚拟串口中的波特率只有在用于USB转串口的时候才会用到,设置了虚拟串口的波特率之后,在打开虚拟串口的时候,USB包里面会有一个控制命令,告知电脑设置的波特率是多少,如果你是要做usb转串口的应用,则在这个时候,初始化你的串口比较合适,如果你不是转串口,那么可以直接无视。
另外,WINDOWS平台下的IO读写速度,取决于设备本身的读取速度(即和USB硬件和驱动有关),排除使用了很挫的驱动和硬件的情况下,虚拟串口的速度理论上为USB1.1的速度。
但是,实际使用过程中,IO读写的效率也有很大关系。
while(i--)
writefile(file, buf, 1);
writefile(file, buf, 100);
这两个在实际使用中的速度,就会差别很大。因此,如果想要获得较大的传输速度,一次性写入IO的内容需要大一些,否则效率低下,速度上不去
楼主可以实测一下,不管是直接写程序还是用串口调试助手,一次性写入不同长度的数据,将会很影响速度。
回复【31楼】gghyoo&&
-----------------------------------------------------------------------
话说难道STM32用的是high speed?
根据这篇文章/usb_virtual_com_port.htm,CDC类在full speed模式下只会安排一次传输/帧(毫秒),而full speed的批量模式最高只有64字节/传输,这样速度很慢阿(等时传输没试过)
我用ATmega32U4和nRF24L01+做USB无线传输时用full speed USB1.1 + 2Mbps空中速率,USB貌似跟不上无线的速度
回复【31楼】gghyoo&&
-----------------------------------------------------------------------
您应该是做过usb转串口的了吧& &不然应该说不出这么具体的问题
确实 用stm32 usb虚拟串口 然后转到真实的串口上需要考虑这些问题
另外想请教一下用 stm32 usb转串口怎样实现流控呢?
回复【6楼】liyanlong55&&紫川秀_MISS
-----------------------------------------------------------------------
朋友你的这个问题解决了吗,我现在也遇到了这个问题,能不能不探讨一下,我的QQ
回复【楼主位】liyanlong55&&紫川秀_MISS
-----------------------------------------------------------------------
同楼上,我现在也要用到USB虚拟串口,交流下
最近我也这研究usb虚拟串口,关于波特率的设置我在源码中没找到,开发板和上位机通信时,无论我怎么设置串口和上位机软件的波特率都能通信,这是不是虚拟串口中波特率是虚拟的,设置为多少只是个虚数,它的速度实际是USB控制器决定的。
stm32好像确实是usb1.1的接口啊。这个用虚拟串口实现的话,速度还是可以的。只是PC上端的软件恐怕是用不成了,原来是操作串口类现在是操作USB类了。
只是我有个问题,如果用“虚拟串口”的话,意味着所有的串口操作是从单片机内部实现的(单片机外部显现的是USB的特性),那么这样的“串口”实际上是无法支持ISP的啊,如果这样的看法成立的话,“虚拟串口”实际上也就是用来在应用中传送大文件的,没有办法实现很多原串口可以实现的功能,那为什么不直接使用USB在应用中接收数据呢?还这么大费周章转成串口了再接收数据。
willX 发表于
stm32好像确实是usb1.1的接口啊。这个用虚拟串口实现的话,速度还是可以的。只是PC上端的软件恐怕是用不成 ...
大多数原因是因为虚拟串口有现成的驱动。
说的很透彻,终于明白USB转虚拟串口的道理了。
但我的为什么才10k字节/s你们都是怎么提速的?
朦朦胧胧,略懂一二了···先回宿舍,再来琢磨琢磨····尤其不明白,
1,虚拟串口,是stm32端发送的是 usb 报文。但是到了pc端被解析 ,放到了 uart buffer中了。对么?
2.如果虚拟串口,上位机,能否按照 com串口编程?但是虚拟串口会变啊。难道做个上位机,每次还选择串口??自适应串口是好的,QT就有那个例子。可总觉得怪怪的。楼上&&有人说,虚拟串口上位机不好编,我又晕了····为嘛?
阿莫电子论坛, 原"中国电子开发网"}

我要回帖

更多关于 stm32串口发送数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信