自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 资源 (22)
  • 收藏
  • 关注

原创 mbedtls 连接 阿里云物联网

mqtt tls 阿里云

2022-12-05 16:29:55 1417

原创 stm32 定时器串联

NVIC_InitTypeDef NVIC_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;// TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能 TIMx 外设 //设置住定时器TIM3 TIM_DeInit(TIM3); TIM_TimeBas...

2022-12-05 16:07:25 526

原创 stm32 普通io 模拟串口 RX PIN

stm32 串口 定时器

2022-04-08 17:24:50 1125

原创 ucos2下的按键扫描程序,低耦合

接口程序 AppKey.c,根据不同的应用电路 修改这个程序//#include "includes.h"#define KEYTOTAL 3#define KeyHoldTime (OS_TICKS_PER_SEC/2)#define KeyRepTime (OS_TICKS_PER_SEC/2)#define KeyLongBit 0 #define KeyRepBit 0//按键等待时间,有些按键要求的等待确认时间比较长INT16U KeyDownDelay[]={

2022-02-26 20:04:36 484

原创 AES和DES 加解密速度比较 使用Openssl库

载入中文16*16字库 大小255K,对内容进行 1000次 加密 解密 操作发现 aes的加密时间是des的1/2 解密时间是des的3/4#include <openssl/des.h>#include <openssl/aes.h>#include <stdio.h>#include <string.h>#include <sys/time.h>void TestAES(unsigned char *pdata,int

2022-02-11 23:49:20 2318

原创 关闭输入回显 scanf

在 程序 输入密码时候 关闭 输入端的回显#include <stdio.h>#include <termios.h>int main(){ structtermiosnew_setting,init_setting; charpwd[16]; tcgetattr(0,&init_setting); new_setting=init_setting; //get termios setting and save it

2022-02-11 19:03:22 984

原创 使用 LibEvent 创建回显服务器代码

在 Ubuntu 的环境上进行编译运行,先要安装 libevent 的库,然后将生成的 软件上传到 阿里云上面,在阿里云的管理后台打开相应的端口,在客户端使用 网络调试助手 发送数据,成功回显代码如下:#include <stdio.h>#include <event.h>#include <arpa/inet.h>#include <event2/listener.h>void CliReadCb(struct bufferevent.

2022-02-06 17:28:32 1141

原创 stm32使用dma+pwm 输出正弦波

生成一个 10bit的 sin函数表 720项const INT32U sintab[]={0x0200,0x0204,0x0209,0x020d,0x0212,0x0216,0x021b,0x021f,0x0224,0x0228,0x022d,0x0231,0x0235,0x023a,0x023e,0x0243,0x0247,0x024c,0x0250,0x0254,0x0259,0x025d,0x0262,0x0266,0x026a,0x026f,0x0273,0x0277,0x027c,0x0

2021-08-05 13:35:46 4135

原创 STM32驱动无刷直流电机学习(5)--ADC电流采样

还是采用匠心科技的无刷电机套件,采样电路如下对应的 adc 的 io 是#define __ADC_MODE__ 4无刷电机学习板 采用 PA6 PA7 PC4 进行电机的电流采样先上adc采样的程序#include "includes.h"#ifndef __ADC_MODE__ #define __ADC_MODE__ 0#endif#if(__ADC_MODE__==0)#define TEST_NUM 4#endif#if(__ADC_MODE__==1 |..

2021-08-03 15:01:50 10352 1

原创 STM32驱动无刷直流电机学习(4)---PID方波控制

在原来的电机任务的基础上增加一个测量速度,修改pwm输出的任务,通过PID 转速能稳定在 设定值范围 浮动, 速度高时候 抖动比较厉害,可能跟 pid 参数有关,或者电机的性能有关,而且声音也比较大,下一步学 foc 看 会不会比较静音INT16U BLDC_PWM=0;INT32U gHallCnt=0;#define PWM_TEST (PWM_PAUSE-BLDC_PWM)void RunMotorTask(void){ INT8U hallcur,hallold=0xff...

2021-06-22 14:47:00 2965

原创 STM32驱动无刷直流电机学习(3)

根据STM32驱动无刷直流电机学习(2)测量出 霍尔和uvw 的对应关系a.电源输入3线u+ v-霍尔的三线输出 110/010就是6/2b.电源输入3线u+ w-霍尔的三线输出 011就是3c.电源输入3线v+ w-霍尔的三线输出 001就是1d.电源输入3线v+ u-霍尔的三线输出 101就是5e.电源输入3线w+ u-霍尔的三线输出 100就是4f.电源输入3线w+ v-霍尔的三线输出 110...

2021-06-21 23:34:21 2786

原创 STM32驱动无刷直流电机学习(2)

stm32 通过 IRS2101S 将驱动io 升压,再驱动N沟道MOS管IRF540NSN沟道MOS管是通过 高电平导通 低电平禁止的

2021-06-14 13:18:16 3219 6

原创 STM32驱动无刷直流电机学习(1)

1.先学习方波驱动无刷直流电机,带霍尔传感器,因为这个最简单sh

2021-06-06 23:30:28 3904 1

原创 stm32 使用 TIM3 输出脉冲 TIM2 进行脉冲计数

先上 定时器 和 io 的设置#include "includes.h"#define TMRNCLK (SYSCLK)/*---- S E T T I M 3 P W M O U T P U T ----【功能】:设置 tim3 使用 pc6 pc7 pc8 pc9输出,低电平有效, 当 tim3->cnt>= pwm占空比 就输出低电平【参数】:****【返回】:****【说明】:****--------------作者:卢杰西 2021年5月

2021-05-04 13:28:45 2590

原创 在STM32CubeMx生成的代码中加入 UCOS2 记录

1.注释掉 main.c里面的main.HAL_Init.HAL_InitTick(TICK_INT_PRIORITY);因为ucos 的定时节拍是在 任务里面启动的2.注释掉stm32f1xx_it.c 里面的PendSV_Handler函数,因为ucos的汇编里面已经写了这个中断3.将抢先级的bit 设为0 , 没有中断嵌套,HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);4.注释掉stm32f1xx_it.c 里面的Sys...

2021-03-17 15:22:11 433

原创 stm32 usb设备标准库的 demo 改造

在学习usb 的过程中 看 stm32 的demo, 真心觉得不好,基于状态的 逻辑分析起来忒麻烦,将我劝退了好多年!!!下定决心去啃过去,看完原理,看 stm32usb转串口的 代码,将不必要的文件 删掉,将原来的 发送一个大包的数据 经过多次中断的发送,要记住发送到那个位置 ...改装为 在 ucos 的任务里面 每发送一个小包 等待发送完毕的消息 再发送下一个小包,看起来就很舒服了,然后移植了 stm原来的 usb转串口的 demo再移植了 stm32 转ch340 串口的demo.

2021-01-29 15:43:59 467 1

原创 Stm32通过串口 Ymodem 协议接收文件

我自己做了一个 针对stm32的isp 离线编程器,设计时候 采用了 W25Q64 作为要烧录文件的存储,直接使用 Ymodem 协议,将文件下载到 flash中,免得再写一个上位机软件,在ucos2的加持下,整个代码的逻辑比较简单易懂Ymodem 协议 参考https://www.cnblogs.com/dwj411024/p/7717084.html贴上我的代码头文件:#ifndef __Y_MODEM_H__#define __Y_MODEM_H__enu..

2020-12-01 17:19:06 2552

原创 Altium Designer 的快捷键记录

上下左右对齐方式 shift+ctrl +(T L R B)也可以 选定好 要对齐的元件之后 按 A将选定元件快速移动到指定的位置T+O+L

2020-11-11 16:58:06 81

原创 unity 输出 android studio 项目

在 unity 的 输出 android 项目中 设定好包名:选中:输出项目 使用 android studio 打开build 提示错误:Unable to find method 'org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V'百度一下 说是 gradle 的版本不对修改 版本:Project/gradle/wrapper/gradle-wrapper

2020-08-13 15:54:14 191

原创 Unity渲染 YUV420P 数据

使用 h264 解码 得到的 一般是 yuv420 格式的数据我解码 1920*1080分辨率 的 h264 得到的数据格式如下Y[0,1,2,...,1920*1080-1] UV[0,1,1920*1080/2-1]使用 unity 的shader 进行渲染 定义了 两个 TEX一个用来 保存 Y 变量 一个 用来 保存 uv 变量Shader "Custom/YUV420ToRGB"{ Properties { _MainTex ("Texture", 2...

2020-08-06 15:26:54 899

原创 Unity 调用 JAR

在网上看了 很多 调用 JAR 都要包含D:\****\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes 里面的 class.jar但是我觉得 只是 单向 unity 调用jar ,没有 jar 调用unity 的函数 应该 不必须所以 我创建 一个com.yiyo.jartest 的工程在里面 创建一个 model命名为 mylib所以 这个库的 全名是com.yiyo....

2020-07-24 15:22:09 1780

原创 android 跨进程通信 binder

先做服务器端:服务端继承Service,里面带了一个mBinder,mBinder其实就是客户端在 服务端的 映射接口,在客户端 通过transact 发送数据mIBinder.transact(1, data, reply, 0); 服务端的mBinder 就能接受数据 触发onTransact 事件public class H264Service extends Service { private H264Binder mBinder = new H264...

2020-07-23 15:08:23 222

原创 使用 CMakeLists.txt 编译 SO 提供给第三方调用(1)

创建 c++ 项目,将 mainactive 调用 c++ 部分的 java 代码全部去掉,这个只要用来 编译 so 文件将native-lib.cpp 删掉新增一个 使用 mediacodec 进行解码 h264 的类的头文件#ifndef TESTADD_DECODEOP_H#define TESTADD_DECODEOP_Hclass AMediaCodec;class DecodeOp{private: int mWidth; int mHeight;..

2020-07-04 23:28:31 1015

原创 android studio 使用 mediacodec 解码 h264 文件

参考了https://www.jianshu.com/p/0695891fa834首先 封装 mediacodec,针对 H264 进行解码/** * Created by ZhangHao on 2016/8/5. * 用于硬件解码(MediaCodec)H264的工具类 */public class MediaCodecUtil { //自定义的log打印,可以无视 Logger logger = Logger.getLogger(); private St.

2020-06-29 10:05:24 783

原创 Android studio 输出 so 供其它 项目 调用

1.生成so在 android studio 3.5 的基础下 创建 native c++ 项目 com.example.hellondk;在 MainActivity 文件中 创建一个新的类 用来 引用 库函数class SoTest{ static { System.loadLibrary("native-lib"); } public static native String stringFromJNI();};将 cpp 里面的 函数名..

2020-06-23 21:30:20 333

原创 ndk和JNI的使用初探

参考资料:https://blog.csdn.net/qq_25884515/article/details/104250920创建C++项目理解 CMakeList.txt文件,设置头文件 和 添加源文件#设置头文件为当前路径INCLUDE_DIRECTORIES("./")# Creates and names a library, sets it as either STATIC# or SHARED, and provides the relative pat.

2020-06-22 00:06:53 190

原创 Hi3516 使用 wifi模块

买回来的 hi3516的学习板的wifi 是2.4G的,想使用5G的wifi模块, 参考https://leux.cn/doc/Linux%E4%B8%8B%E7%BC%96%E8%AF%91RTL88XX%E7%B3%BB%E5%88%97%E8%8A%AF%E7%89%87%E9%A9%B1%E5%8A%A8.htmlhttps://blog.csdn.net/weixin_44362642/article/details/88891075选定 芯片为将CONFIG_P...

2020-06-17 23:30:32 1180

原创 从stm32移植ucos2的代码到GD32

stm32和gd32 基本通用的,所以os_cpu_c.c,cpu_a.asm,os_cpu_a.asm完全不用修改库函数名字有些不同在main 函数里面定义中断的优先级方法 nvic_priority_group_set(NVIC_PRIGROUP_PRE0_SUB4); //同等优先级在第一个启动的任务里面启动 系统定时器 SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC);将在stm32里面的的...

2020-05-27 15:18:44 2080 1

原创 使用python的matplotlib进行绘图,

打算学习神经网络,打算做一个数据拟合的实验,先熟悉在 python 里面绘图import numpy as npimport matplotlib.pyplot as plt#x range (0,3*PI) step ((3*PI-0))/99)x = np.linspace(0, 3 * np.pi, 100)nosie = np.random.uniform(-0.1 , 0.1, 100 )y1 = np.sin(x)+nosiey2 = np.sin(x)#y3 = .

2020-05-17 10:31:30 299

原创 -Wl,--start-group ... -Wl,--end-group 用于解决几个库的循环依赖关系

-Wl,--start-group -lmy_lib -lyour_lib -lhis_lib -Wl,--end-group -ltheir_lib

2020-05-14 11:17:44 6594

原创 makefile 自动编译 目录和子目录的 C文件

CROSS = arm-himix100-linux-CC = $(CROSS)gccCXX = $(CROSS)g++ DEBUG = -g -O2 CFLAGS =-Dhi3516ev200 -DHI_XXXX -DISP_V2 -w -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -fno-aggressive-loop-optimizations -ldl -ffunction-sections -fdata-sections -...

2020-05-14 10:49:52 1476

原创 bp神经网络的学习心得

看了一篇关于 BP 神经网络的文章,可以快速理解bp神经网络,https://yq.aliyun.com/articles/277312下面是我的理解bp神经网络就是 将 自然问题 一个黑箱的输入 A 到结果输出 B例如输入一张猫的照片 输出是一个cat的问题 用电脑猜测出黑箱的结构 用代码实现这个黑箱的转换神经网络就是一个通用型的黑箱结构,可以设定神经层数,但是每层神经之间的传递参数是不确定的,这个要通过数据学习不停的进行纠正,这个就是数据学习的过程例如这个bp神经...

2020-05-13 16:39:40 4905 2

原创 在ubuntu下交叉 libevent-2.1.8 for hi3516ev300

解压源码tar -zxvf libevent-2.1.8-stable.tar.gz进入源码文件夹:第一步 设置编译器 ./configure--host=arm-himix100-linux第二步 make第三步 将 隐藏文件夹里面的 .libs 的*.a *.so 拷贝到项目中...

2020-05-13 12:19:44 151

原创 在虚拟机ubuntu下 编译 protobuf-c for hi3516ev300

1.在宿主虚拟机下安装 protobuf版本是 protobuf-2.6.1 不要在 windows 的共享文件夹里面安装 可能会 bug1. 先安装依赖库 automake ,autoconf ,libtool2. ./configure3. make4. make cheak5. sudo make install可能会出现错误或者还是显示的老版本号,错误原因:protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib不在ub...

2020-05-13 11:56:30 212

原创 在 ubuntu10 下 安装 ssh

因为学习 hi3516 买来的学习板的环境是 ubuntu10 所以想在 ubuntu 10 上面安装 ssh但是 发现安装过程中 提示 失败, 应该是源过期了更新源参考文章转载自:http://blog.csdn.net/suquan629/article/details/52333769ubuntu10.4到2016年早已停止了更新支持,ubuntu也不再维护了。官方源以及第三方源包括163,sohu等也不再维护。那是不是意味着这个版本的ubuntu只能放弃使用?当然不是的!!.

2020-05-12 17:17:52 228

原创 stm32 利用 串口接收空闲中断 + dma 实现不定长度dma 接收

#include "includes.h"void UartDmaSend(INT8U *pt,INT8U len){ INT8U err; DmaSendData(DMA1_Channel7,pt,len); OSSemPend(OSSemDmaU2Tx,0,&err);}void UsbTask(void *pdata){ INT8U err,*pt,len; ...

2020-05-07 21:19:20 763

原创 vue-cli 学习记录

安装vue-cli npm i vue-cli -g 安装完毕后 可以运行 vue -V 查看版本号 -V 的V 是大写创建 vue项目 ,使用 init 初始化一个项目 vue init <template-name> <project-name> <template-name> 是模板名称 一般使用 ...

2020-04-30 23:47:06 132

原创 STM8L 液晶数码管驱动,温度计液晶屏显示

启动液晶驱动 stm8 支持 4com 28 seg 可以显示 28*4=112点的液晶void LCD_Configuration(void){ /* Enable RTC CLK */ CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); /* Choice CLK Source, HSI_Freq = 16M, RTC_...

2020-04-16 11:40:51 1119

原创 stm32使用spi1在slave 模式下 dma 读取数据

初始化 spi1 ,要外部 片选了 pa4 才能进行通信,pMem=OSMemGet(OSMemC2B,&err);是 ucos2 的函数,就是获得一片内存,可以直接指定一个数组 代替void InitSpi1DmaRec(void){ INT8U err,*pMem,*pTmp; SPI_InitTypeDef SPI_InitStructure; GPIO_InitT...

2020-04-15 17:03:30 2656

转载 用模态框 实现 注册 登陆

说明:1. 上来一个ul先把登录和注册两个链接扔进去,ul的类nav,navbar-nav是导航条,navbar-right让他固定在右侧。每个li的里面,data-toggle="modal"是点击出现一个modal模组,data-target="#register"是点击之后出现的弹框的id,再里面的span是那个小人图标。2. 接下来就是一个大div装着这个注册的弹框,id="reg...

2020-04-02 16:56:45 3229 1

Gif2Bmp.rar

使用 mfc 开发的 将gif 每一帧提取出来 转换成 bmp的工具,因为单片机gif解码实在太慢了,先用空间换时间,放到25Q64里面

2021-02-22

stm32_ucos_ch340.rar

stm32 用ucos 重写了 ch340 的usb枚举,流程更加明了,便于学习

2021-01-29

ucos2重写stm32标准库的usb转串口demo

因为stm32的usb转串口demo的枚举过程是基于状态的,分析起来不明了,改为基于ucos2的基于过程,代码直接明了 分析起来

2021-01-27

tcp转串口,使用libevent

在ubuntu里面使用 libevent 实现,作为

2021-01-10

cryptopp810.zip

在 https://www.cryptopp.com/index.html#download 下载的最新代码 测试过 可以在 vs2010 vs2013 上编译通过, 官网下载太慢了,放到这里 大家下载快点 crypto++ 的820 库

2020-04-08

u3dtcpsrv.rar

unity通过调用 c++ 的dll 实现 tcpserver,只接收一个客户端,实现跟客户端的数据交流

2020-03-11

stm32isp.rar

C代码,接口简单明了,在本机测试通过可以正常读写stm32 串口设备默认是 ttyUSB0 int DemoPro(unsigned char *pdata,int len) { int ret=0; stm32isp.fd=stm32isp.open(); printf("fd:%d\n",stm32isp.fd); while(1){ if(TestLink()!=0) {ret= 1;break;} //握手失败 if(GetVersionAndCmd()!=0) {ret= 2;break;} //获取版本失败 printf("ver:%d.%d\n",stm32isp.ver>>4,stm32isp.ver&0x0f); if(stm32isp.ver!=0x22) {ret= 3;break;} //下载器的版本不对,暂时只针对2.2版本的程序 if(GetProtectState()!=0) {ret= 4;break;} //其实读取不了是不是保护的状态的 if(GetStm32TypeId()!=0) {ret= 5;break;} //获得stm32的型号 printf("stm32 type:%X\r\n",stm32isp.typeid); if(ReadMemory(0x1FFFF7E8,12,(unsigned char*)stm32isp.onlyId)!=0) //读取唯一id,读取失败则解锁再读取 { printf("read id eror\n"); if(UnRdProtect()!=0) {ret= 6;break;} continue; } else printf("stm32id:%08X%08X%08X\n",stm32isp.onlyId[0],stm32isp.onlyId[1],stm32isp.onlyId[2]); if(EraseFlash()!=0) { //擦除失败 就擦除读保护 printf("Erase Chip error\n"); if(UnRdProtect()!=0) {ret= 7;break;} continue; } //if(WriteMemory(0x8000000,sizeof(testcode),testcode)!=0) {ret= 8;break;} //printf("Write Rom ok\n"); //if(EnRdProtect()!=0) {ret= 9;break;} //printf("read protect\n");1 //if(EnWrProtectX(0,2)!=0) {ret= 10;break;} //printf("write protect ok\n"); if(WriteBin2Flash(pdata, len)!=0) {ret= 8;break;} if(VerifyRom(pdata, len)!=0) {ret= 9;break;} if(EnWrProtectX(0,64)==0) { //写入写保护之后 系统会重启 if(TestLink()!=0) {ret= 1;break;} //握手失败 }else {ret= 10;break;} if(RunProgram(0x8000000)!=0) {ret= 11;break;} break; } stm32isp.release(stm32isp.fd); return ret; }

2020-02-26

hisi_io_drv.rar

Hi3516Ev300 的io驱动,参考了mini2440 的led驱动开发 在测试demo里面会使得GPIO1_4切换高低电平 在console 先 insmod HiLed.ko 在 /dev 里面就会有设备 HiLed 然后运行 .\TestLed 就能用万用表看到 GPIO1_4 的电平切换

2020-01-02

hisi_io_drv.rar

海思3516ev300 的 IO 驱动 GPIO1_4 参考 Mini2440 的io驱动 改动而来 里面写好了 makefile

2020-01-01

gb2big.zip

为了单片机中简体转繁体字的字码 转换公式 简体字的 编码0 编码1 繁体字 编码0= gb2big[((简体字的 编码0 - 0xB0) * 0x5E + 简体字的 编码1 - 0xA1)*2] 繁体字 编码1= gb2big[((简体字的 编码0 - 0xB0) * 0x5E + 简体字的 编码1 - 0xA1)*2+1]

2019-10-14

rtp转h264文件 将udp的数据保存成 h264

将rtp中的h264保存成文件,将udp包重新组包,为了实现摄像头数据的及时读取

2019-08-28

rtp2h264.rar

visual C++ 的工程 实现rtp推流h264在vlc下播放,附带了h264文件,dsp文件

2019-08-08

ComDlg.rar

串口的异步通信,实现了串口的发送接收,专门打开串口接收线程等待串口数据

2019-07-14

bin2hex.rar

源码以及exe可执行文件 将bin文件转换为hex文件,因为很多烧录器都使用hex方式烧录 bin2hex abc.bin 0x8001000 abc.bin是bin文件 0x8001000 是 bin文件放入的hex地址

2019-07-04

stm32利用spi驱动tm1803

stm32利用spi+dma 驱动 tm1803 测试可以驱动64个灯组没有压力,理论上可以驱动128个 tm1803

2018-10-24

将游戏手柄按键映射到键盘

在linux下 将游戏手柄的按键 映射到 键盘 发送到系统消息中, 可以用游戏手柄玩本来只能键盘玩的游戏

2018-08-14

串口发送按键信息

监控mfc窗体的按键,输出相应的按键信息,包含了代码和exe文件

2017-12-11

基于COCOS2DX的推箱子 源代码

cocos2dx 推箱子 源代码 apk 的运行效果和 exe 有区别 不知道问题出在哪里

2017-06-01

Mini2440 Linux SDL推箱子代码

使用SDL贴图做的 推箱子 用触摸笔操作

2015-02-01

图像识别 对 点数 的识别

采用vc6编写 自动对亮度进行调整 里面有样品进行测试 无聊 为了找工作有作品面试所写

2010-08-15

基于mega8的操作系统,类ucos

用mega8 实现两个任务 其实最多支持8个任务的,理论上 在m8上面应该能跑4-5个任务 里面是一个按键扫描 一个液晶显示的任务 因为用操作系统做菜单比较方便所以写的

2010-03-08

推箱子 源代码 MFC

推箱子 源代码 MFC 纯鼠标操作 谢谢大家指正 QQ 191635418

2009-10-20

空空如也

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

TA关注的人

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