自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (7)
  • 收藏
  • 关注

原创 P300脑机接口及数据集处理

P300是大脑认知过程中产生的一种事件相关电位,主要与期待、意动、觉醒、注意等心理因素有关。Sutton等人发现,当人脑受到小概率相关事件的刺激时,脑电信号中会出现一个潜伏期约为300ms的正向波峰,P300因此得名。P300脑机接口在基于P300的oddball刺激范式 BCI 系统研究中,最经典的应用是Farwell和Donchin在 1988年提出并设计的字符拼写器简称为P300 Speller。如下图所示,使用26个英文字母和 1-9个数字以及下划线排列成 6 x 6 的虚拟键盘矩阵。随机高亮

2020-06-05 16:35:49 17639 32

原创 OFDM仿真_MATLAB仿真ofdm

OFDM调制解调仿真MATLAB版一、OFDM步骤网上ofdm普遍采用这样一个顺序仿真,产生0-1随机序列 => 串并转换 => 映射 => 取共轭、过采样=> IFFT => 加循环前缀和后缀 => 加窗 => 并串转换 => 加AWGN => 串并转换 => 去前缀 => FFT =>下采样 => 解映射 =...

2020-04-22 12:51:28 10640 26

原创 C++学习笔记 & 用法快速查询库

c++标准模板库提供了一个容器集,针对不同的需要有不同类型的容器。

2023-03-30 11:52:20 168

原创 TensorFlow2:CNN识别mnist手写体数字

CNN识别mnist手写体数字CNN模型构建整体架构代码实现代码分析卷积层maxpool层和Batch_normalization编程效果具体代码CNN模型构建整体架构代码实现代码分析卷积层maxpool层和Batch_normalization编程效果编程效果如下,经过几个epoch,测试集上的识别率到达了99%左右具体代码import tensorflow as tfimport numpy as np#读取训练测试集feature = { 'x

2021-06-12 22:50:22 396 5

原创 TensorFlow2:tensorboard可视化

tensorboard是TensorFlow自带的可视化工具,主要有Scalars、graphs、distributions、histograms、Timer Series几个部分scalars中含有训练过程中的学习率、损失、精确率随迭代次数变化曲线,并且可以把数据下载成csv文件形式graphs中是训练过程的计算图,如下所示,包含了所用优化器、损失计算等过程distributions、histograms是训练过程中模型权重的分布情况和分布直方图总的来说scalars可以帮助我们记录模型训练过程

2021-06-06 16:28:04 942

原创 TensorFlow2:RNN、LSTM、GRU

TensorFlow2中keras框架下layer对象中封装了大量常见循环神经网络层,如keras.layer.SimpleRNN、keras.layer.RNNcell、keras.layer.LSTM、keras.layer.LSTMcell等等类,其中keras.layer.SimpleRnn、keras.layer.LSTM、keras.layer.GRU类就是我们常说的RNN、LSTM、GRU在TensorFlow2对应的函数,下面对几种循环神经网络的输入输出简单介绍TensorFlow实现三种

2021-06-05 00:44:20 696 1

原创 TensorFlow2:tf.data数据集的构建与预处理

tf.data.Dataset是一种针对大规模数据设计的迭代器。tf.data中有许多数据集预处理函数,并且可以和keras框架的compile、fit、evaluate训练方式和tf.GradientTape无缝衔接,使训练网络和数据预处理变得简单tf.data数据集的构建与预处理数据集构建数据集预处理函数Dataset.map(f)Dataset.shuffle(buffer_size)Dataset.batch(batch_size)Dataset.prefetch()数据集构建代码示例imp

2021-06-04 17:40:36 1004

原创 TensorFlow2:TFRecord存储、读取矩阵

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-06-04 00:42:07 693

原创 TensorFlow2:用Keras构建模型与训练

有了Keras之后,事情变得简单模型构建首先,明确Keras中有两个重要的模块:model和layerKeras中layer分装了常见的全连接层,cnn,rnn等,我们只需要调用这些层,封装进model中,就完成了网络的构建,使用Keras后,网络定义变得高效,标准,快速。①使用Sequential()构建模型import tensorflow as tfimport numpy as npmodel = tf.keras.models.Sequential()model.add(tf.ke

2021-04-24 00:50:27 886

原创 Anaconda下opencv的简单安装方法

安装(通过pip命令)第一步:打开cmd.exe,激活anaconda中你准备安装的环境第二步:输入命令pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple也可以pip install opencv-python建议用清华镜像那个,速度快测试在你的IDE中import cv2如果安装成功,cv2的颜色会改变...

2021-04-23 13:01:47 192

原创 TensorFlow1: 模型保存读取

很简单,在原代码基础上加几句代码即可一、保存模型3句即可,首先建立一个saver和一个路径下面两句添加在session创建之前,参数、网络结构定义之后# (C)pengchengIT 2021#保存模型saver = tf.train.Saver()model_path = "model/001model"#启动sessionwith tf.session() as sess:...然后调用save,自动将session中的参数保存起来。下面一句添加在session最后面save

2021-03-14 19:00:01 636

原创 TensorFlow1 :RNN实现mnist手写体数字识别

RNN过程

2021-01-30 21:03:55 881

原创 数字手写体识别python实现(全连接神经网络)

效果展示向网络输入测试集中‘7’并绘出该输入图,得到10个标签的概率,7对应的标签概率最高,效果很好全连接神经网络网络结构1、输入层,隐藏层,输出层2、层与层之间连接权重3、激活函数sigmoid训练任务分为2部分1、针对给定的训练样本计算输出(正向传播)2、将计算得到的输出与所需输出对比,使用差值来指导网络权重更新(反向传播)反向传播误差误差函数梯度下降测试任务或叫查询,与训练任务一同分类任务中标签与概率训练测试集mnist训练测试集,是一个手写数字识别库,世界上

2021-01-15 17:26:08 1377

原创 深度学习、人工智能环境配置

深度学习编程前需要准备好环境,包,IDE,常用软件。环境可以直接安装anaconda,深度学习常用包tensorflow需要anaconda环境,anaconda内已包含python创建深度学习环境所需的软件组件1、在cmd窗口激活环境,通过pip install 包/conda install 包指令配置2、tensorflow可以只装CPU版本,GPU版本要求较高,CPU的就够用安装包或软件介绍Tensorflow用于图形计算的开源python包,通常用于深度学习系统的

2021-01-12 12:58:49 472 2

原创 白噪声MATLAB

1、白噪声频谱白噪声(white noise)是指功率谱密度在整个频域内是常数的噪声。 所有频率具有相同能量密度的随机噪声称为白噪声。2、均匀白噪声、高斯白噪声、瑞利白噪声①均匀白噪声是幅度统计规律服从均匀分布而功率谱为常数的噪声②高斯白噪声是幅度统计规律服从高斯分布而功率谱为常数的噪声③瑞利白噪声是幅度统计规律服从瑞利分布而功率谱为常数的噪声3、信噪比信噪比是指信号最大幅值和噪声的最大幅值的比,用信号最大幅值除以噪声最大幅值所得结果即是。MATLAB编程效果时域分析频域分析

2020-10-27 00:02:09 11707 2

原创 msp430g2553串口通信

下面对msp430g2553串口通信做出总结并给出代码,从收发字节;到中断函数的使用;再到收发字符串,指令;再到如收发{0xE6,…,0xE6}有前后缀的指令的通信协议。收发字符 (链接中有例程)收什么发什么,可以控制发送字节,字符串msp430g2553软件串口msp430g2553硬件串口发送中断函数msp430g2553发送中断函数接收字符串接收字符串涉及到存储的问题,啥时候开始存,啥时候结束存。msp430g2553接收字符串串口协议复杂一点的,常常使用队列接收,这样数据的可靠

2020-09-04 16:54:02 3227 1

原创 msp430g2553_IO口输入

通过P2.2口输入,P2.2低电平时点亮P2.4口的LED仿真通过代码如下:#include "io430.h"void main(void) { P2DIR &=~ BIT2;P2DIR = BIT4;for(;;){ if((P2IN & BIT2)==0) P2OUT &= ~BIT4; else P2OUT |= BIT4; }}...

2020-08-04 00:37:22 772

原创 16qam调制、接收、眼图、误码率曲线matlab仿真

MQAM (Multiple Quadrature Amplitude Modulation) 多进制正交幅度调制。4相相位键控信号其实也是一种二电平正交振幅键控。如果将二电平振幅键控进一步发展为多电平(例如4、8、16电平等)正交振幅键控,显然可以获得更高的频谱利用率。效果展示:(1)调制星座图(2)信噪比13db接收星座图(3)16qam信号眼图(4)13db信噪比下16qam信号眼图(5)误码率曲线(15db内)代码说明1、M可改,16qam,4qam等,snr信噪比可改。m

2020-06-23 18:06:38 11274 1

原创 SSVEP脑机接口及数据集处理

稳态视觉诱发电位(Steady-stateVisual Evoked Potentials, SSVEP)属于视觉诱发电位(Visual Evoked Potentials, VEP),是指当人眼受到一个恒定频率(通常大于4Hz)的视觉刺激时,大脑视觉皮层会自动产生与刺激频率及其谐波频率同频率的响应。ssvep典型应用实验目的:利用ssvep实现高速字符输入说明:屏幕上5X8个方格以不同频率(8-15hz)和相位闪集中烁,受试着将视线ssvep数据集该数据基于SSVEP经典实验范式产生,所提供数据

2020-06-05 09:29:28 5090 19

原创 java离线安装包_java下载

Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!官网下载_不推荐速度慢360软件管家_推荐速度快,无需注册,操作简单360软件管家搜索Java,点击下载...

2020-05-27 22:17:30 4138

原创 msp430g2553串口通信_发送中断处理函数使用

当收到a时,使能发送中断,并触发发送中断函数,发送hello world!发完后disable发送中断串口助手测试发a12,收到hello world;发12,没触发;测试成功 ????代码#include "msp430g2553.h"#define TXLED BIT0#define RXLED BIT6#define TXD BIT2#define RXD BIT1const char string[] = { "Hello World\r\n" };unsigned int

2020-05-13 17:34:04 1182

原创 msp430g2553定时器Timer_A

定时器Timer_AMSP430g2553具有两个16位的定时器:Timer0_A Timer1_A。分别具有三个捕捉/比较部件,具有输入捕捉,输出比较功能。可以产生定时中断,也可以产生PWM。Timer_A寄存器包括:TAR:存放 TA 的当前计数值 TARx;TACTL:控制寄存器、与定时计数器相关的控制位;TACCRx:捕获比较寄存器、捕获比较的值;TACCTLx:捕获比较...

2020-05-13 16:13:34 3222 1

原创 msp430g2553的ADC10多通道输入

msp430g2553有8个外部通道可以输入,下面我将完成3路输入控制3个LED亮灭的程序。寄存器说明代码说明#include <msp430.h>unsigned int a[]={0};int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC10CTL1 = INCH_5+CONSEQ_1; // A5/A4, single sequence ADC10CT

2020-05-13 11:56:30 2619 1

原创 msp430g2553 ADC10

msp430g2553中含有ADC10模块,该模块支持快速 10 位模数转换。 该模块提供了一个 10 位 SAR 内核、采样选择控制、基准发生器和用于转换结果自动处理的数据传输控制器 (DTC), 因而无需 CPU 的干预即可对 ADC 采样进行转换和存储。一、ADC10寄存器字寄存器字节寄存器二、ADC10工作模式1.单通道单次转换模式在此模式下,ADC10模块实现对单通道输入模拟信号 的一次采样 — 转 换 过 程 。2. 单通道多次转换模式在此模式下,ADC10 模块实现对选定通

2020-05-13 10:21:44 2788

原创 msp430g2553的ADC10单通道输入

p1.1输入采集物理量,p1.0的LED根据p1.1输入改变亮灭。ADC10模块的寄存器和多通道输入可以参考:代码说明单通道输入用到ADC10CTL0,ADC10CTL1控置寄存器(管理ADC10的打开、中断开启;通道开启、转换模式选择)和ADC10AE0模拟启用寄存器(决定输入引脚),还有ADC10MEM内存寄存器(存放采样值)#include <msp430.h>int main(void){WDTCTL = WDTPW + WDTHOLD;

2020-05-13 10:05:07 1190 1

原创 msp430g2553输出PWM波

用msp430g2553的定时器timerA就可以实现PWM波,内容不难!设置下时钟源,定时器配置一下就可以了仿真:代码:TA1CTL:选时钟源,计数模式增TA1CCR0(定时器寄存器)与频率有关;TA1CCR1(定时器寄存器)与占空比有关;TA1CCTL1:OUTMOD_7输出模式选择。#include <msp430.h>void main(void){ TA1CTL |= TASSEL_2 + MC_1; //选SMCLK,增计数 P2SEL |= BIT1

2020-05-08 23:30:52 3833 3

原创 msp430g2553按键控制LED亮灭

实现每按一次button,LED输出翻转一次。仿真如下:每按一次P1.3的button,p1.6连的LED翻转一次;代码说明:每按一次button,触发一次引脚中断,执行一次 P1_3ISR() 中断函数#include <msp430.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTP1DIR = BIT6; //p1.0,p1.6外接LED为输出状态P1OUT &= ~ BIT6;P1REN |=

2020-05-08 23:30:14 4334

原创 msp430g2553串口接收字符串_接收指令

串口接收中断函数一次只能接收一个字,接收一个字符串并存下常用方法:①设置标志位:如在末尾加入标志位’\r’,’\n’;前缀+数据+后缀②定时判断接收数据的长度,如果在规定时间内,长度没有什么变化,证明已经接收了任意长度的字符。下面我用设置标志位的方式实现接收字符串,并根据不同字符串执行不同的操作。代码与仿真串口助手收发情况打开板子,电脑端收到MADE BY PengChengIT....

2020-05-07 13:45:04 3368 2

原创 msp430G2553串口通信_launchpad串口通信

1

2020-05-05 18:11:05 6164 9

原创 msp430g2553串口通信_软件串口

①寄存器功能选择寄存器(PxSEL & PxSEL2) ① 对于 P1 、P2 来说, PxSEL.m = 1 时,相应 引脚上的中断功能将被禁用。 ② PxSEL.m = 1 时, PxREN.m = 1(上拉/下拉使能寄存器 PxREN)可能会烧坏内部上拉/下拉电阻, 一般不推荐使用这一组合。 ③ PxSEL.m = 1 时,引脚的数据传送方向并不会随之改变,所以 在使用时仍需要根...

2020-05-03 20:04:29 3267 3

原创 msp430g2553时钟

msp430g2553有4个时钟源,3个时钟输出,并用4个时钟寄存器。初始化定时器,串口,pwm波等等也需要先要设置时钟,下面对时钟的寄存器,时钟源,时钟输出总结寄存器包括DCOCTLBCSCTL1BCSCTL2 BCSCTL3时钟源MSP430系列单片机的时钟系统具有 4 个时钟源:内部:低速振荡器(VLO)和数控振荡器(DCO);外部:LFXT1 和 XT2,既可以...

2020-04-26 10:26:01 1957

原创 msp430g2553流水灯

点亮LED理解代码需要知道msp430的寄存器和几个基本的逻辑运算。寄存器说明:① 方向寄存器(Direction Register, PxDIR) :方向寄存器的每一位控制着对应引脚的数据传输方向 。控制位数值的含义是,0 表示设置为输入方向; 1 表 示设置为输出方向,默认是输入方向。② 输出寄存器(Output Register, PxOUT) : 当端口被配置为 IO 功能、且为...

2020-04-23 00:14:26 2441

ssvep脑机接口.zip

一些参考资料

2021-04-23

脑机接口p300资料.zip

一些参考文献

2021-04-23

预处理后mnist训练测试集

测试集形式60000x784(28乘28为784)和60000x10(10个标签对应的概率),原来为60000x785,只有标签没标签概率)。测试集同。

2021-01-30

mnist手写体数字测试训练集

表格形式(CSV)的mnist训练测试集,大部分电子表格和数据分析软件兼容形式 包括mnist_test.csv、mnist_train.csv、mnist_test_10.csv、mnist_train_100.csv mnist_train.csv、mnist_test.csv分别有60000、10000个标记样本集 mnist_test_10.csv、mnist_train_100.csv则只有10条100条记录是上面的子集 在深入研究前我们常用子集验证算法再用完整集

2021-01-13

P300数据(MATLAB).rar

整个P300数据由基于Oddball范式的P300字符实验产生,实验过程如下:实验过程由一名被试者完成,字符矩阵的显示周期为2.5s,在这个周期内,字符矩阵的每行或列均被随机地加亮一次,加亮的持续时间为lOOms,两次加亮之间的时间间隔为75ms:对于每个目标字符,受试者需连续重复进行15次实验,即要经历15个字符矩阵显示周期,因此对于一个目标字符,字符矩阵会进行12×15次加亮。第一节各段的目标字符分别为CAT,DOG,FISH,WATER,BOWL;第二节各段的目标字符分别为HAT,HAT,GLOVE,SHOES,FISH,RAT;第三节各段的目标字符为FOOD,MOOT,HAM,PIE,CAKE,TUNA,ZYGOT,4567。在实验过程中,设备通过位于受试者脑部头皮上的64个采样电极,以240Hz的采样频率记录脑电信号。并将记录的信号分为三节,每节信号又根据英文单词或字符组的不同分成许多段。其中第一节(Session 10)包括5个段,第二节(Session 11)包括6个段,第三部分(Session 12)包括8个段。每段数据存储为一个Matlab数据格式文件,如第一节第四段的实验数据存储为文件“AAS010R04”,第二节第六段的实验数据存储为文件“AAS011R06”。

2020-06-05

ssvep脑机接口信号(Data_2.mat)

该数据基于SSVEP经典实验范式产生,所提供数据为4维数据,其中第一个维度表示数据采集的通道数,第二个维度表示数据采样点数,第三个维度表示实验次数,第四个维度表示试验中刺激块的闪烁频率。例如Data_1数据大小为[9,5120,40,6],9表示该实验数据的采集来自于9个通道,5120为采样点数,40表示为确保数据的可靠性,共进行了40轮,6表示SSVEP实验范式中刺激块的闪烁频率为6个不同的频率

2020-06-04

msp430g2553官方例程C语言.zip

官方例程,包含uart,iic,ad10等具体例子。msp430g2x13_ca_01.c Comp_A, Output Reference Voltages on P1.1 msp430g2x13_ca_02.c Comp_A, Detect Threshold, Set P1.0 if P1.1 > 0.25*Vcc msp430g2x13_ca_03.c Comp_A, Simple 2.2V Low Battery Detect msp430g2x33_adc10_01.c ADC10, Sample A0, Set P1.0 if A0 > 0.5*AVcc msp430g2x33_adc10_02.c ADC10, Sample A1, 1.5V Ref, Set P1.0 if A1 > 0.2V msp430g2x33_adc10_03.c ADC10, ADC10, Sample A10 Temp, Set P1.0 if Temp ++ ~2C msp430g2x33_adc10_04.c ADC10, ADC10, Sample A1, Signed, Set P1.0 if A1 > 0.5*AVcc msp430g2x33_adc10_05.c ADC10, ADC10, Sample A11, Lo_Batt, Set P1.0 if AVcc 0.5V msp430g2x33_adc10_12.c ADC10, Sample A7, 1.5V, TA1 Trig, Ultra-Low Pwr msp430g2x33_adc10_13.c ADC10, DTC Sample A1 32x, AVcc, TA0 Trig, DCO msp430g2x33_adc10_14.c ADC10, DTC Sample A1-0 16x, AVcc, Repeat Seq, DCO msp430g2x33_adc10_16.c ADC10, ADC10, DTC Sample A0 -> TA1, AVcc, DCO msp430g2x33_adc10_temp.c ADC10, Sample A10 Temp and Convert to oC and oF msp430g2xx3_1.c Software Toggle P1.0 msp430g2xx3_1_vlo.c Software Toggle P1.0, MCLK = VLO/8 msp430g2xx3_clks.c Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10 msp430g2xx3_dco_calib.c Basic Clock with preloaded DCO calibration constants msp430g2xx3_dco_flashcal.c DCO Calibration Constants Programmer msp430g2xx3_flashwrite_01.c Flash In-System Programming, Copy SegC to SegD msp430g2xx3_LFxtal_nmi.c LFXT1 Oscillator Fault Detection msp430g2xx3_lpm3.c Basic Clock, LPM3 Using WDT ISR, 32kHz ACLK msp430g2xx3_lpm3_vlo.c Basic Clock, LPM3 Using WDT ISR, VLO ACLK msp430g2xx3_nmi.c Basic Clock, Configure RST/NMI as NMI msp430g2xx3_P1_01.c Software Poll P1.4, Set P1.0 if P1.4 = 1 msp430g2xx3_P1_02.c Software Port Interrupt Service on P1.4 from LPM4 msp430g2xx3_P1_03.c Poll P1 With Software with Internal Pull-up msp430g2xx3_P1_04.c P1 Interrupt from LPM4 with Internal Pull-up msp430g2xx3_pinosc_01.c Capacitive Touch, Pin Oscillator Method, 1 button msp430g2xx3_pinosc_02.c Capacitive Touch, Pin Oscillator Method, 4-buttons msp430g2xx3_pinosc_03.c Capacitive Touch, Pin Oscillator Method, 4-buttons, ACLK for CCR msp430g2xx3_pinosc_04.c Capacitive Touch, Pin Oscillator Method, 8 buttons, UART msp430g2xx3_ta_01.c Timer_A, Toggle P1.0, CCR0 Cont. Mode ISR, DCO SMCLK msp430g2xx3_ta_02.c Timer_A, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK msp430g2xx3_ta_03.c Timer_A, Toggle P1.0, Overflow ISR, DCO SMCLK msp430g2xx3_ta_04.c Timer_A, Toggle P1.0, Overflow ISR, 32kHz ACLK msp430g2xx3_ta_05.c Timer_A, Toggle P1.0, CCR0 Up Mode ISR, 32kHz ACLK msp430g2xx3_ta_06.c Timer_A, Toggle P1.0, CCR1 Cont. Mode ISR, DCO SMCLK msp430g2xx3_ta_07.c Timer_A, Toggle P1.0-2, Cont. Mode ISR, DCO SMCLK msp430g2xx3_ta_08.c Timer_A, Toggle P1.0-2, Cont. Mode ISR, 32kHz ACLK msp430g2xx3_ta_10.c Timer_A, Toggle P1.1/TA0, Up Mode, DCO SMCLK msp430g2xx3_ta_11.c Timer_A, Toggle P1.1/TA0, Up Mode, 32kHz ACLK msp430g2xx3_ta_13.c Timer_A, Toggle P1.1/TA0, Up/Down Mode, DCO SMCLK msp430g2xx3_ta_14.c Timer_A, Toggle P1.1/TA0, Up/Down Mode, 32kHz ACLK msp430g2xx3_ta_16.c Timer_A, PWM TA1-2, Up Mode, DCO SMCLK msp430g2xx3_ta_17.c

2020-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除