自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(210)
  • 资源 (6)
  • 收藏
  • 关注

原创 C语言通过ODBC函数操作Access数据库(mdb和accdb格式)

编译环境:Windows XP + Visual Studio 2010。数据库:Access 2010,accdb格式。

2022-11-26 13:09:55 423

原创 IMX6ULL实现linux系统下用hrtimer扫描8位数码管

例如,串口命令行空闲时,数码管扫描速度非常慢,几秒钟才扫描一位。linux系统后台有很多任务,如果我们想要在嵌入式linux环境下实现扫描数码管,并且要求任何情况下,无论linux系统在干什么事情,数码管都不能闪烁,只要肉眼看到一次闪烁就不合格,那就必须采用定时器中断的方式扫描。正点原子的教程上讲了linux下的struct timer_list定时器,这个定时器是基于系统tick值的,最小时间单位是10ms,而且实际还有更大的误差,这显然不能满足要求,用这个频率扫描数码管太慢了,数码管闪烁严重!

2022-09-21 23:55:53 306

原创 of_find_compatible_node查找出所有的节点

要点:(1)第一次调用of_find_compatible_node的时候,第一个参数为NULL(2)后续第n次调用of_find_compatible_node,第一个参数为第n-1次调用of_find_compatible_node的返回值(3)of_find_compatible_node的返回值node,使用完毕后必须调用of_find_compatible_node或of_node_put释放掉程序运行结果:...

2022-06-05 18:50:39 751 1

原创 在struct file_operations结构体中获取struct cdev,struct device以及自定义数据结构

在正点原子的linux驱动教程中,dev_t设备号、struct cdev、struct class、struct device等结构体都是存放在一个自定义结构体中的,并不是定义成全局变量。这个自定义结构体所占用的内存则是在probe函数中由kzalloc函数分配,例如:struct test_data{ struct gpio_desc *gpios[4]; dev_t devid; u8 devid_valid; struct cdev cdev; struct class *clas

2022-05-21 16:18:08 504 1

原创 关于设备树里面pinctrl的属性不能生效的问题

Linux下gpio(旧API)和gpiod(新API)子系统主要负责配置GPIO的输入/输出方向,读取输入的电平,和设置输出的电平。pinctrl子系统主要负责设置gpio其他方面的东西,比如配置复用功能(alternate function),配置上下拉电阻,推挽输出或开漏输出,配置输出速度等等。本人阅读了正点原子imx6ull开发板手册“【正点原子】阿尔法Linux开发板(A盘)-基础资料/09、文档教程(非常重要)/【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6.pdf”里面的“

2022-04-24 22:29:41 1566

原创 正点原子阿尔法Linux开发板移植Ubuntu18.04根文件系统问题解决

本文参考资料:https://blog.csdn.net/weixin_41608556/article/details/118253137笔者的板子处于出厂状态,uboot和linux内核都是放在emmc上的,板子开机从emmc启动uboot。但ubuntu根文件系统是放在SD卡的一个ext4分区上的,不是以镜像的方式存在。插上SD卡,板子从emmc启动uboot后马上按下回车键进入uboot命令模式,执行:setenv mmcroot /dev/mmcblk0p4 rootwait rwbo

2022-03-05 17:04:16 1540

原创 【程序】Marvell 88W8782/88W8801 WiFi模块创建或连接热点,并使用lwip2.1.3建立http服务器(20220213版)

本程序所用的单片机型号为:STM32F103RE、STM32F407ZG或STM32H743ZI。复位引脚(PDN)应连接到STM32F1/F4的PA15引脚或STM32H7的PE6引脚。不连接PDN引脚将导致固件无法下载!如果模块上有PDN和RESET两个引脚,只需要连接PDN引脚。因为模块上的RESET引脚是悬空的,根本就没有连到芯片上。STM32F1和F4用的晶振是8MHz,请注意检查自己的开发板,看看晶振是不是8MHz。如果是12MHz,在标准库程序中请修改system_stm32f10x.c或

2022-02-13 22:44:30 2713 4

原创 让Win7 IE11浏览器右上角拥有小搜索框

如图所示,刚安装好的IE11浏览器,右上角是没有小搜索框的。如何让IE11浏览器拥有右上角的小搜索框呢?答案是用火狐浏览器在Windows Update Catalog中下载KB4052978这个补丁包并安装。文件名为ie11-windows6.1-kb4052978-x86_92c867719463186f23e992ebf1ad6442df3dd949.msu。...

2022-02-05 11:21:52 489

原创 ROS actionlib库里面取消目标操作(cancelGoal)的方法

client里面,在30%进度的时候,调用cancelGoal()取消操作:#include <actionlib/client/simple_action_client.h>#include <hello_world/DoDishesAction.h>typedef actionlib::SimpleActionClient<hello_world::DoDishesAction> Client;static Client *client_ptr;s

2022-01-24 19:42:52 1202 1

原创 【程序】在STM32单片机上实现基于LwIP 2.1.3协议栈raw API的DHCP服务器,为其他设备分配IPv4地址(20220122版)

使用方法:IP4_ADDR(&ip4addr, 192, 168, 20, 1); // 板子IP地址IP4_ADDR(&netmask, 255, 255, 255, 0); // 子网掩码ip4_addr_set_zero(&gw); // 默认网关netif_add(&wifi_88w8801_uap, &ip4addr, &netmask, &gw, NULL, ethernetif_init, netif_input);neti

2022-01-21 00:07:58 1032 2

原创 WiFi固件bin文件转C数组的程序

编译环境:Visual Studio 2012#include <stdio.h>#include <Windows.h>#define FOLDER_88W8686 "E:\\Users\\Octopus\\Downloads\\SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL\\SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45\\FwImage"#define FOLDE

2022-01-16 13:20:41 197

原创 在Visual Studio 2012下编译lwip-2.1.3 httpd的makefsdata

步骤一 建立空白工程新建一个工程,项目名称起名为makefsdata。因为mkfsdata是一个控制台程序,所以我们要选择Win32 Console Application。这里很重要,必须要勾选“Empty Project”选项,建立空项目:建好的解决方案目录是C:\Users\Octopus\Desktop\makefsdata,工程目录是C:\Users\Octopus\Desktop\makefsdata\makefsdata。步骤二 解压lwip-2.1.3的部分头文件和

2022-01-14 11:57:04 756

原创 Quartus II 13.0sp1 NIOS添加include头文件包含路径的方法

如图所示, 源文件目录中haha文件夹下有一个hoho.h头文件。本来要包含这个头文件应该写成#include "haha/hoho.h"的,但是如果写成#include <hoho.h>的话,就需要把haha文件夹添加到include头文件包含路径中,否则编译不通过。在项目上点击右键,选择Properties命令。找到Nios II Application Properties --> Nios II Application Paths,在右边的Application i

2022-01-08 11:59:50 1887

原创 Xilinx Vitis 2020.1添加include头文件包含路径的方法

如图所示, 源文件目录中haha文件夹下有一个hoho.h头文件。本来要包含这个头文件应该写成#include "haha/hoho.h"的,但是如果写成#include <hoho.h>的话,就需要把haha文件夹添加到include头文件包含路径中,否则编译不通过。在左栏“项目名_system”的下一级“项目名”上点击右键,选择Properties命令。请注意是在下图红框处点击右键,而不是绿框处。找到C/C++ General --> Paths and Symbo

2022-01-08 11:28:57 2386 1

原创 基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程移植到自己做的板子上

原程序是运行在小梅哥AC620开发板上的:基于小梅哥AC620开发板的NIOS II LWIP百兆以太网例程_ZLK1214的专栏-CSDN博客_小梅哥ac620【开发板】开发板型号:小梅哥AC620FPGA型号:EP4CE10F17C8N晶振频率:50MHzPHY芯片型号:RTL8201CP(MII接口,百兆以太网PHY芯片)【程序功能展示】1. ping通开发板的NetBIOS设备名,IPv4地址和IPv6地址2. 访问开发板上的http服务器(设备名方式、IPv6方式):3. 在路由器管理页面看到开发

2022-01-07 19:07:13 1603 2

原创 NIOS II串口非阻塞方式接收数据

Quartus II 10.0版本以上可以用fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK)将标准输入stdin设为非阻塞模式,然后用getchar,read,scanf等函数接收串口数据。笔者用的版本是Quartus II 13.0sp1 (64-bit)。下面的程序实现了每隔1秒钟打印一次hello world和系统毫秒计数器的值,收到串口字符时立即打印出来的功能。用read函数接收1字节字符,函数不阻塞,如果没有字符就会返回-1,有字符则返回1。/* *

2022-01-06 20:58:24 1756

原创 关于STM32H743ZI SDMMC 1线模式下Stream模式写数据卡死的问题

CMD53读写数据,小于等于512字节时用stream模式,大于512字节时用block模式。这在STM32F103和STM32F407的SDIO下测试过,都没问题。然而同样的代码在STM32H743的SDMMC下运行,结果是:(1)4线模式下,CMD53读写数据,不管是否使用IDMA, Stream/Block模式均正常。(2)1线模式下,不管是否使用IDMA,情况如下:方式 情况 CMD53 Stream模式读数据 正常 CMD53 Stream模式写数据 卡死在w

2021-12-29 19:26:14 583

原创 Altium Designer等长布线,遇到三个节点(三条支路)的网络(Net Class)应该怎么办

本文参考资料:如何使用xSignals来定义高速信号的路径-电子发烧友网Altium Designer软件版本为17。如图所示,给一个32MB的SDR SDRAM内存等长布线。在原理图中用Place -> Directives -> Net Class给要等长的线添加Net Class,然后在PCB文件的Rules里面给Net Class添加550mil的长度约束,最后进行等长布线。除了SDRAM_SDNE0这条线以外,其他线都还好,没有分支。偏偏SDRAM_SDNE0这条线有一个上拉电阻

2021-12-23 15:41:17 1140

原创 【程序】STM32H743ZI用SDMMC2驱动88W8801 WiFi模块

本程序所用的单片机型号为:STM32H743ZI本程序基于:Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)晶振:25MHz HSE接口:SDMMC2【开发板】【接线方法】引脚 I/O口 复用功能 布线长度 PDN PE6 SDMMC2_D0 PB14 AF9 3150mil SDMMC2_D1 PB15 AF9 3150m

2021-12-16 22:31:04 996 2

原创 【程序】STM32H743ZI单片机驱动DP83848以太网PHY芯片,移植lwip 2.1.3协议栈,并加入网线热插拔检测的功能

HAL库版本:STM32Cube_FW_H7_V1.9.0Keil5工程下载地址:开发板:【电路连线】晶振采用的是XTAL-3225封装的50MHz有源晶振。引脚名称 单片机I/O口 ETH_REF_CLK PA1 ETH_MDIO PA2 ETH_CRS_DV PA7 ETH_TX_EN PG11 ETH_TXD0 PB12 ETH_TXD1 PB13 ETH_MDC PC1 ETH_RXD0 P

2021-12-14 11:38:23 2127

原创 lwip-2.1.3在STM32F103ZE+ENC28J60有线网卡上无操作系统移植(使用STM32 HAL库)

一、概述以太网芯片简介ENC28J60是一款10Mbps速率的以太网MAC+PHY芯片,和单片机的通信接口为SPI,SPI最高时钟频率为20MHz。ENC28J60支持半双工和全双工模式,但是不支持自动协商。在支持自动协商的网络环境中,ENC28J60默认的工作模式是半双工模式。另外,STM32本身有一个ETH外设,这个外设采用的接口是MII或RMII,不是SPI,所以不能连接ENC28J60芯片,这次我们用不到这个ETH外设。STM32本身的ETH外设相当于MAC,通常要外接一个PHY芯片(

2021-11-19 12:49:04 1738

原创 STM32F1 HAL库读写SD卡的操作要点

本文采用的HAL库版本为STM32Cube_FW_F1_V1.8.0(带Patch-CubeF1 1.8.4)。知识点一:SD卡数据线位宽的配置SD卡可以采用1位数据线模式,也可以采用4位数据线模式。但是必须确保STM32单片机的SDIO设置的数据线位宽,和SD卡上设置的数据线位宽是一致的。将hsd.Init.BusWide设为SDIO_BUS_WIDE_4B,然后执行HAL_SD_Init函数,只能把STM32单片机的SDIO设置为4位位宽,SD卡上还是用的1位位宽。所以通常的做法是hsd

2021-11-17 21:49:59 3109 4

原创 uboot里面size命令的用法

size命令用于获取文件的大小。命令格式:size 设备名 设备号:分区号 文件名获取到的文件大小是存放在环境变量filesize里面的,用printenv filesize命令查看。u-boot # size mmc 1:3 scripts/update_time.shu-boot # echo $?0u-boot # printenv filesizefilesize=8emmc 1:3表示mmc1的第三分区。u-boot # size mmc 1:2 bin/busybox

2021-10-29 20:06:31 330

原创 探究hyyoxhk移植的uboot-2017.11无法从eMMC启动的原因

本人下载了CSDN博主hyyoxhk移植的适用于迅为itop4412精英版SCP 1GB的uboot,他这个uboot能成功从SD卡启动,然后读取保存在SD卡里面的linux内核并运行,但是却无法从emmc启动。于是,笔者开始探究他移植的这个uboot为什么不能从emmc启动。打开uboot debug调试首先第一步就是打开DEBUG调试功能,看看uboot输出的调试信息,以便分析程序的运行流程。(1)修改include/configs/itop4412.h文件,在末尾添加#define DE

2021-10-14 00:30:19 1558 2

原创 a²+a³=392 怎么解?(求根公式法求解)

2021-10-11 08:16:41 395

原创 2021年新安装的Win7系统,Windows Update无法更新,提示错误代码80072EFE

本文涉及到的三个补丁的下载链接:https://pan.baidu.com/s/1YYSzXw2QCIX8kBauz_u5bg?pwd=i6yr(提取码:i6yr)(其中KB976932是升级SP1的补丁包)Win7那么成功,微软却要放弃,强推Win10,实属可悲。本来以为Win7停止官方支持后,仅仅是不会提供新的更新和漏洞修补而已,然而事实是,新装的Win7,Windows Update完全无法使用,所有以前推出的更新都无法安装,微软的做法比XP更绝!Office 2010的激活服务器也访问不了,

2021-10-07 15:42:39 46142 8

原创 XP系统下无法访问Samba服务器的解决办法

本人在迅为itop4412 scp 1GB精英版开发板上用gcc10.3本地编译安装了samba-4.14.7,编译时的配置选项为./configure --without-gpgme。samba服务器启动后,Windows 7和Windows 10都能正常访问,但Windows XP却无法访问,提示找不到服务器,如下图所示。解决方案是,修改samba的配置文件(/usr/local/samba/etc/smb.conf)文件,找到[global]将workgroup的值设为WORKGROUP

2021-10-02 16:19:22 1619

原创 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(五)

[上一篇]编译能在板子上运行的GCC编译器和GDB调试器在板子上运行Java使用ntp软件包通过网络更新系统时间安装Bash shell见GCC编译器专题文章:【教程】制作能在ARM板上直接运行的gcc本地编译器_ZLK1214的专栏-CSDN博客编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm)概述通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里面运行。也就是说,我们是用电脑上运行的gcc编译ARM

2021-09-26 17:20:08 540

原创 解决嵌入式Linux里面vim编辑器没有颜色的问题

TERM环境变量的默认值是vt102,我们需要将其修改为xterm。修改/etc/profile文件,在里面加一句:export TERM=xterm然后重新连接putty,vim就有颜色了:而且sl程序也能正常跑小火车:

2021-09-18 20:35:38 508

原创 最小linux系统下rosdep init和rosdepc init都更新失败的解决办法

本人用的开发板是迅为itop4412精英版SCP 1GB。CPU芯片是exynos4412。本人在开发板上搭建了Linux最小系统,将gcc10.3.0编译器移植到开发板上运行后,本地编译安装了python2.7.18。然后准备搭建ros环境。按官网上的说明来,先安装python的包管理器pip,然后看Generic (pip)那一栏:pip install -U rosdep rosinstall_generator vcstool rosinstallpip install --upgrade

2021-09-16 12:31:58 842

原创 嵌入式Linux Busybox创建用户后无法登录的解决方案

先用addgroup命令添加一个mysql组:addgroup -S mysql再用adduser命令添加一个mysql用户:adduser -S -G mysql -s /bin/sh mysql(-S表示组号或用户号从100开始,不加-S那就从1000开始)设置密码:passwd mysql完了之后,su mysql登录,结果提示:[root@exynos4412 /]# su mysqlsu: can't execute '/bin/sh': Permission denied在电脑上用

2021-09-15 22:48:13 442

原创 GCC能否运行于ARM-Linux环境下?即GCC能否在ARM平台上运行?

当然可以,本人已成功编译出能在迅为itop4412开发板(exynos4412 cpu)上运行的gcc 10.3.0编译器!CPU:exynos4412 4核 ARMv7-A架构 Cortex-A9系列 32位有了这样的gcc本地编译器,就可以像使用PC机一样使用板子,在板子上源码编译安装软件。任何软件的安装,都只有以下四步:第一步 去官网下载源码包第二步 ./configure或cmake .第三步 make第四步 make install在板子上安装软件,一下子变得非常简单了,再也不

2021-09-15 15:20:29 450

原创 【教程】制作能在ARM板上直接运行的gcc本地编译器

编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm)概述通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里面运行。也就是说,我们是用电脑上运行的gcc编译ARM板子上运行的程序,即交叉编译。对于用automake制作的软件包来说,有时候交叉编译会非常麻烦。Linux系统下绝大部分软件包都是automake制作的。交叉编译小型的软件,如make、file、mlocate这种还比较简单。但是如果是apache、

2021-09-13 15:21:40 4819 17

原创 关于file命令报错找不到magic文件的问题

嵌入式板子上执行file命令,提示file: could not find any valid magic files! (No such file or directory)这是因为板子上file软件包没有在正确的路径下安装。正常情况下,如果configure的时候不指定--prefix选项,那么--prefix的默认值为/usr/local(可通过./configure -h看到)也就是说file软件默认是安装在/usr/local目录下的,magic.mgc文件应该放到/usr/local/s

2021-09-13 10:12:13 1053

原创 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(四)

[上一篇]配置用户账户到目前为止,我们的最小Linux系统里面还没有任何用户账户,就连root账户也没有。我们执行whoami命令查看当前登录的用户,提示找不到0号用户:/ # whoamiwhoami: unknown uid 0用ls -l命令查看文件列表时,也只能看用户和组的ID号(root用户id为0),看不到名称:/ # ls -l roottotal 28-rwxr-xr-x 1 0 0 170 Jan 1 00:1

2021-09-03 21:41:52 1043 2

原创 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(三)

在上一篇文章中,我们编译了linux内核、设备树和busybox根文件系统,成功启动了我们的最小Linux系统。接下来我们在这个最小Linux系统下运行一个Hello World C程序试试看。运行Hello World C程序将SD卡插到电脑虚拟机里面,进入ext4分区的root目录,以sudo方式创建一个hello文件夹,然后把这两个文件夹的所有者和所属组改成Linux虚拟机的当前用户,我们在文件管理器里面就有操作这个文件夹的权限了。[oct1158@fedora root]$ sudo

2021-08-28 15:45:46 508

原创 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(二)

在上一篇,我们用选择的交叉编译器成功编译了uboot,并在开发板上运行成功。接下来,我们还要编译内核、设备树和文件系统。编译Linux内核[本文参考资料:移植linux4.14内核到4412开发板(衡山法师)]去Linux内核官网下载Linux4.14.2版本的内核压缩包,压缩包的文件名为linux-4.14.2.tar.gz。解压后,打开Makefile文件,将ARCH修改为arm,CROSS_COMPILE修改为叫交叉编译器的全路径。编译内核同样也会出现yylloc的问题,所以也要

2021-08-27 21:09:11 1276

原创 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(一)

概述迅为iTOP-4412开发板采用的CPU芯片为三星的exynos4412,开发板分为三种:(1)POP封装+1GB内存(2)SCP封装+1GB内存(3)SCP封装+2GB内存。笔者用的是SCP 1GB精英版(elite)。迅为开发板自带的光盘里面,有Android系统、QT系统、Qtopia系统和Ubuntu系统的源代码和镜像,但是却唯独没有Linux最小系统的源码和镜像!操作系统 uboot所在文件夹 linux内核所在文件夹 根文件系统所在文件夹 And..

2021-08-25 20:07:08 3636 2

原创 Android BLE BluetoothGatt蓝牙通信封装成InputStream和OutputStream

此类封装了BLE蓝牙的数据收发操作,使用起来很方便。构造函数DeviceConnection(BluetoothDevice device, Context context)的参数分别是要连接的蓝牙设备以及当前Activity对象。调用getInputStream获取输入流,用于接收数据。调用getOutputStream获取输出流,用于发送数据。waitForConnection函数用于等待蓝牙连接建立,是可选的操作。不需要等待连接建立好,就可以直接调用收发数据的函数,若连接建立失败则会抛出异常。

2021-08-09 23:52:46 340

原创 【方法】Java DataOutputStream writeInt和writeShort如何输出小端序字节序(Little Endian)

使用Integer.reverseBytes()和Short.reverseBytes()方法就可以了。请注意是reverseBytes()不是reverse()!ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();DataOutputStream bytesDataOut = new DataOutputStream(bytesOut);bytesDataOut.writeInt(0x89abcdef);bytesDataO

2021-08-08 15:59:28 300

88W8782_88W8801 WiFi模块创建或连接热点,并使用lwip2.1.3建立http服务器(20220213版)

本程序所用的单片机型号为:STM32F103RE、STM32F407ZG或STM32H743ZI。

2022-02-13

STM32F103RE_ftp_20200703.zip

在STM32F103RE裸机环境下用lwip 2.1.2驱动88W8801 WiFi模块并运行FTP服务器读写W25Q128上存储的文件(20200703版)

2021-12-29

Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)

STM32F103RE或STM32F407VE单片机通过SDIO或SPI接口驱动88W8801 WiFi模块

2021-12-29

STM32H743ZI用SDMMC2驱动88W8801_20220112.zip

本程序所用的单片机型号为:STM32H743ZI 本程序基于:Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版) 晶振:25MHz HSE 接口:SDMMC2

2021-12-29

RZ-51 6合1扩展板原理图.pdf

RZ-51 6合1扩展板原理图

2021-10-07

【VC6助手】DLL自动复制机

在VC6中开发DLL,每次编译都要把DLL复制到工程目录下,很麻烦很麻烦。用了这个工具,你只需要点击“执行”按钮就完毕了。很方便。 【运行前必须导入vcpcfg.reg注册表文件(都怪我不会编写安装程序)】

2012-04-15

空空如也

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

TA关注的人

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