自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux shell脚本实现sftp文件目录下载

主要脚本代码如下,亲测可用,下载命令之前需要加sudo#!/bin/bash# 作者:zwa# 功能:下载数据到 本地目录# SFTP 配置信息# SFTP 帐号USER=jijian# SFTP 密码PASSWD=jj# SFTP目录SRC=/home/jijian# 下载到本地的目录DESC=/home/databackup# IPHOST=10.2.5.142# 端口PORT=22SRC_DIR=${SRC}$1DESC_DIR=${DESC}$1# 下载文

2022-03-11 14:21:24 3571

原创 Linux下用shell脚本实现sftp文件下载

亲测可用代码如下:#!/bin/bashUSER=jijian#密码PASSWORD=jj#下载文件目录SRCDIR=/home/databackup#FTP目录(待下载文件目录)DESDIR=/home/jijian#IPIP=10.2.5.142#端口PORT=22#需要下载的文件为fileNamefileName="1.txt"lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT}<<EOFcd ${DESDIR

2022-03-09 16:05:09 3607 2

原创 linux下用shell脚本实现sftp文件上传

先实现文件上传,文件下载过后在和大家分享。先把代码贴出来,亲测可用的,你们用需要改一些用户名,密码,待上传文件目录、sftp目录等。#!/bin/bash#SFTP配置信息#用户名USER=jijian#密码PASSWORD=jj#待上传文件根目录SRCDIR=/home/databackup#SFTP目录DESDIR=/home/jijian#IPIP=10.2.5.142#端口PORT=22#获取文件cd ${SRCDIR} ;#目录下的所有文件#FILES=`ls

2022-03-09 15:07:59 5076

原创 Linux 使用shell脚本实现文件上传

具体代码如下:######本地的/home/databackup to ftp服务器的/home/data#####!/bin/bashftp -n<<!open 10.2.5.172user test testbinaryhashcd /home/datalcd /home/databackuppromptmput *closebye!

2022-03-09 09:08:36 1473

原创 Linux下使用 shell 脚本实现ftp文件下载

最近从单片机转岗Linux,上级叫我熟悉下shell脚本,用shell脚本获取ftp上的文件,本节先介绍下载文件。单个下载文件脚本实现如下:运行环境:WSL####### ftp服务器上下载/home/data a.c to local /home/databackup####!/bin/bashftp -n<<!open 10.2.5.172user test testbinarycd /home/datalcd /home/databackuppromptget a.c

2022-03-08 16:57:26 2724

原创 gd32f130 G8U6RS485 实现串口接收数据

最近在实现lora通信网关的代码,用到了RS485实现串口接收数据,其主要代码及完整代码如下:RS485硬件初始化:/*串口1初始化*/void rs485_usart_init(){ rcu_periph_clock_enable(RCU_USART1); //使能串口时钟 usart_disable(USART1); usart_baudrate_set(USART1, baudrate); //波特率 usart_parity_config(USART1, p

2022-02-21 09:21:57 1846 1

原创 GD32 f130G8U6 RS485发送数据

最近在弄Lora 通信网关代码,用到了RS485发送接收数据,RS485半双工通信,芯片上有一发送接收使能引脚,PA8。高电平接收,低电平发送。RS485接收发送使能主要代码如下/*接收使能*/void rs485_receive_enable(){ gpio_bit_set(GPIOA, GPIO_PIN_8);}/*发送使能*/void rs485_send_enable(){ gpio_bit_reset(GPIOA, GPIO_PIN_8);}接下来是RS485硬件初

2022-02-18 09:31:48 6907 1

原创 stm32轮询接收字符串控制开关灯

即将放年假了,公司目前也没有什么事情是我可做的,便买了一块便宜的stm32板子重新系统学习单片机。目前学到了串口轮询接收字符串。主要代码如下:板子主控:stm32rct6,他们的库函数其实都差不多,适当修改下即可。主要实现代码如下:while(1) { if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) == 1) //USART_FLAG_RXNE判断数据,== 1则有数据 { for(i=0;i<5;i++){ while(USAR

2022-01-26 11:03:25 4535 1

原创 stm32看门狗工作原理

一、为什么需要看门狗?在MCU微型计算机系统中,MCU运行程序很容易受到外界电磁场的干扰,从而造成程序运行错误甚至造成跑飞现象,从而陷入死循环,程序的正常运行被打乱,从而造成不可预料的严重后果,于是人们就设计了一款用于实时监测计算机运行状态的芯片,我们就将其称为看门狗。二、看门狗的作用看门狗会无时无刻的去喂狗,如果程序发生跑飞的现象,那么单片机程序就不能继续去喂狗,继而计数器计数到0,看门狗产生复位脉冲信号。单片机发生程序跑飞的现象才会产生一个复位脉冲强制单片机复位,从而使单片机正常运行。三、看门狗

2022-01-25 09:38:57 1164 1

原创 stm32F103 串口中断接收字符串总结

最近在弄单片机的串口,想使用单片机的中断接收字符串,在网上查阅资料,汇总了一下,单片机型号为stm32f103rct6,IDE为keil5版本。代码示例如下:首先是串口初始化:里面包含了GPIO、NVIC和USART初始化的结构体及设置。void MyUSART_Init(){ /* 定义GPIO、NVIC和USART初始化的结构体 */ GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; US

2022-01-20 14:35:33 5941 2

原创 stm32f103rct6串口接收字符控制LED闪烁

最近在学单片机的串口,首先从串口发送接收开始吧,串口发送比较简单,下面讲讲串口接收字符串的情况。单片机型号用的是 stm32f103rct6,IDE版本是keil 5。本代码是操作寄存器实现串口接收字符串。代码如下:#include "led.h"#include "delay.h"#include "sys.h"#include "usart.h" u8 i=0; int main(void) { u8 t; u8 len; u8 mark=0; delay_init();

2022-01-20 09:37:21 5708 3

原创 GD32F103C空闲中断加dma接收不定长字符串

最近再弄apm32串口中断接收字符串,在网上查了资料发现用空闲中断加DMA接收字符串比较好,自己研究了一下,整理了下,以备以后用得到首先是DMA配置,代码如下:void dma_config(void){ dma_parameter_struct dma_init_struct; rcu_periph_clock_enable(RCU_DMA0); /* deinitialize DMA channel4 (USART0 rx) */ dma_dei

2022-01-17 13:43:57 1056 1

原创 apm32串口发送字符串总结

最近在弄apm32,在弄串口发送接收字符串,之前在实习的时候弄过GD32,有点基础,要操作寄存器标志位,所用的库函数不大一样,方法是相同的。主要代码如下: for(i = 0; i < sizeof(txBuf); i++) { while(USART_ReadFlag(USART2, USART_FLAG_TXBE) == RESET); USART_TxData(USART2, txBuf[i]); }

2022-01-15 15:39:49 3101

原创 Source Insight 4.0安装

最近在用source Insight浏览代码,在网上找了下资源,现将sourceInsight4.0破解版本 发布如下:链接:https://pan.baidu.com/s/1vEodSZLAlfuGbPZrGD-ZUQ提取码:d460里面有一个sourceInsight.exe,替换掉文件夹下的.exe文件,在选择激活方式的第三个,找到文件夹下的.lic文件,便可破解成功。...

2021-11-12 15:42:35 448 1

原创 wsl安装 交叉编译工具链出错解决方法

参照以下博客:https://blog.csdn.net/wu10188/article/details/86542418https://www.freesion.com/article/9406988182/在输入下列命令:apt-get install lib32stdc++6 libc6:i386apt-get install g++#apt-get install libncurses5-devapt-get install lib32stdc++6 libc6:i386...

2021-10-27 13:41:03 237

原创 linux下文件解压、压缩命令

最近在工作中遇到了 文件解压命令,一直分不清是哪个命令。以下是文件格式解压、压缩命令:.tar.gz文件解压命令:tar -zxvf 压缩文件名.tar.gz例如下图的 tar -zxvf arm_linux_4.8.tar.gz压缩命令: tar -zcvf 压缩文件名 .tar.gz 被压缩文件名例如下图的 tar-zcvf arm_linux_4.8.tar.gz arm_linux_4.8/...

2021-10-20 09:17:50 1160

原创 extern、static关键字的作用

一、extern 关键字的作用:例.extern void setup_arch();extern 用在变量或者函数的声明前,用来说明“此变量/函数”在别处定义,在此处要引用二、static关键字的作用例、static void do_initcall() {static int err;}在模块内,一个被声明为静态的函数只可被这一模块内的·其它函数调用,这个函数被限制在声明的它的模块的本地范围内。static int err; 在函数体内,一个被声明为静态的的变量在这一函数调用的过程中,

2021-09-22 10:10:40 540

原创 C语言堆栈、队列代码的两种实现

栈,线性表的一种特殊的存储结构。与学习过的线性表的不同之处在于栈在于栈只能从表的固定一端对数据进行插入和删除操作,另一端是封死的。栈的“先进后出”原则使用栈存储数据元素,对数据元素的“存”和“取”有严格的规定,数据按一定的顺序存储到栈中,当需要调取栈中某数据元素,需要将该数据元素之后进栈的先出栈,该数据元素才能从栈中提取出来。栈操作数据元素的方法栈操作数据元素只有两种动作:1、数据元素用栈的数据结构存储起来,称为入栈,也叫压栈。2、数据元素由于某种原因需要从栈结构中提取出来,称为出栈,也叫弹栈

2021-08-05 15:38:50 431

原创 C语言基础之杨辉三角demo实现

杨辉三角含义在初中,我们就知道杨辉三角的两个腰边的数都为1,其它的位置数都是上顶上两个数之和。这就是我们用C语言写杨辉三角的关键之一。首先定义一个二维数组,arr[]N[N],略大于打印的行数,再令两边的数为1,即当每行的第一个数和最后一个数为1。 for(i=1;i<=n;i++) a[i][1] = a[i][i] = 1; /*两边的数令它为1,因为现在循环从1开始,就认为a[i][1]为第一个数*/除两边的数外,任何一个数上为上两顶数之和,即a[i][j]=a[i

2021-07-08 14:10:23 344 5

原创 C语言基础之个税计算器demo实现

最近在学C语言基础,在导师的指导下,先准备写个个税薪资计算器。这是一个简单的C语言小demo。主要用到了C语言的函数,if选择语句。程序的主要代码如下(可运行):#include <stdio.h>float Salary;int len;float CulculateSalary (){ printf("请输入你的薪资\n"); scanf ("%f",&Salary); //getchar(); if(Salary -5000 &

2021-07-08 11:07:09 790

原创 C语言嵌入式数据结构之链表

链表在C语言中对于我来说,一直是个头疼的问题,现在已经工作了,这些东西得要搞懂。先从基础开始弄起吧。链表单向链表所谓链表就是每个结点除了值以外附带一个链接的表,一般这个链接指向下一个结点,从而形成了一个有序队列。单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。链表是使用指针进行构造的列表,并且是由一个个结点组装起来的,因此又称为结点列表。其中每个结点都有指针成员变量指向链表的下一结点,head指针指向的第一个结点称为表头,而终止于最后一个指向null的指针。

2021-07-07 15:19:06 618 3

转载 GD32串口接收字符串总结

GD32串口怎么接收字符串这个问题在之前困扰了我很长时间,可以通过轮询和中断两种方式,轮询主要代码如下:/*! \file main.c \brief USART printf demo*//* Copyright (C) 2017 GigaDevice 2017-06-23, V1.0.0, demo for GD32F30x*/#include "gd32f30x.h"#include "gd32f303c_eval.h"#include "syst

2021-05-07 09:47:12 2346

转载 GD32用IO口模拟呼吸灯

“呼吸灯”其实就是小灯的亮度是逐渐变化的,也就是说,只要能够使用单片机控制小灯的亮度,“呼吸灯”的效果也就实现了。使用C语言控制单片机IO交替输出高低电平,实现LED小灯的闪烁效果。核心代码如下:while(1){ P20 = 0; delay(10); P20 = 1; delay(10); }IO输出的高低电平持续时间都是10个单位,一个完整的周期内,LED小灯的亮灭时间都是相等的。由此可见,使用单片机控制小灯亮度,就是控制

2021-04-29 19:24:21 1451

原创 GD32串口接收发送数据总结

在使用GD32串口接收数据的过程中,遇到了数据无法接收的问题,在导师的帮助下,需要调用usart_flag_get函数来使RBNE置1,RBNE:读数据时缓冲区非空,当数据缓存区接收到来自移位寄存器的数据时,该位置1. 0:读数据缓存区为空, 1:读数据缓存区不为空。主要代码如下:while(1) { delay_1ms(400); gd_eval_led_on(LED3); delay_1ms(400); gd_eval_led

2021-04-26 16:59:25 9109

原创 GD32 ADC功能及代码详解

最近实习,接触到的板子是GD32,是国产兆易的,在学习裸机的ADC例程,期间学习到了好多知识。也很后悔在学校里没有深入学习这些东西。导致在工作中遇到很多问题。ADC是模数转换器,这个不用说了,大家都知道。具有12位分辨率。它一共有18个通道,16个外部通道,两个内部通道。各种通道的AD转换可以配置成单次、连续、扫描或间断转换模式。接下来讲解下这些转换模式的区别。单次转换模式每次转换都要触发,单通道,先触发规则通道,在采样,在转换。如下图所示。连续转换模式只第一次触发,之后就不停的转换按着顺序,逐

2021-04-21 16:37:15 12110 3

原创 嵌入式学习笔记汇总

已经实习了将近一个月了,也该进行知识的总结了。借此总结巩固一下自己所获取的知识点。RT-Thread 系统邮箱可用于进程间通信定义静态邮箱struct rt_mailbox static_inb ;定义动态邮箱rt_mailbox_t dynamic_mb ;消息队列RT-Thread常用的线程间通信方式。软件定时器软件定时器是由操作系统提供的一类系统接口;软件定时器使系统提供不受数目限制的定时器服务RT-Thread操作系统提供的软件定时器,以系统节拍的时间长度为定时单位,提供了基于

2021-04-13 17:47:01 375

原创 RT-Thread 创建线程、实现生产者、消费者模式

生于忧患,死于安乐。时间过的真快,去年在实习的时候,我觉得我还是挺认真的,那时候岗位不对口,一心想着做嵌入式,自学了不少。现在如愿做了嵌入式,却很少做总结了。也没有当初做嵌入式的那种热血了。还是不能堕落呀。接下来进入正题。先写一个demo,创建两个线程,一个线程获取并发送按键响应,另一个线程实现led灯的切换。主要代码如下:#include <rtthread.h>#include <board.h>#include <rtdevice.h>#define LE

2021-04-12 18:47:54 312

原创 RT-Thread嵌入式实时操作系统详解

最近在公司实习,在导师的指导下,在学习RT-Thread,之前接触过一点Freertos,也是实时操作系统。裸机系统main函数里面顺序执行的无限循环(while(1)),cpu按顺序完成各种事情。多线程系统把整个系统分割成一个个独立的无法返回的函数。RT-Thread (Real Time-Thread)嵌入式实时多线程操作系统。支持多任务同时运行。多线程cpu在同时干多件事,线程主动切换。系统调度在就绪列表中寻找优先级最高的就绪线程。临界段一段在执行的时候不能被中断的代码段。RT

2021-03-21 10:23:01 1795

原创 树莓派火灾报警模块总结

火灾报警这一模块比较好实现,也是意料之中的事情。用到了以下模块:火焰传感器、树莓、继电器、蜂鸣器。接线如下图:代码如下:#include <stdio.h>#include <string.h>#include <wiringPi.h>#include <wiringSerial.h>#include <unistd.h>#define SWITCH 7#define SWITCH2 22int initwiringPi

2021-02-08 16:10:17 1933

原创 树莓派语音控制开关灯

摘要最近在做智能家居项目,从一开始的无从下手,到现在也算是小有所成了,树莓派语音控制开关灯这个是智能家居项目一个大的组成部分,写此博客,也是为了很好的记录下此过程。物料:树莓派3B语音识别模块LDV7(STC11+LD3320)继电器小灯实现原理树莓派与语音模块串口通信,发出语音指令通过串口识别指令,来控制继电器,进而实现开灯的效果。修改代码部分树莓派代码部分#include <stdio.h>#include <string.h>#include &l

2021-02-07 11:04:27 3129 6

原创 计算机网络中网关、路由器、网桥、交换机概念详解

摘要作为计算机专业的学生,已经大四了,发现计组、操作系统、计算机网络是本专业的三大神书。只要想从事本专业的工作,无论是前端、后端、还是嵌入式,都离不开这三本书。网关网关是指网络的进口和出口,要想实现网络A和网络B之间的通信,则必须通过网关。网关在网络层以上使用的中间设备。路由器路由器也可以叫做网关设备,是连接因特网各局域网、广域网的硬件设备比,可以读取每一个数据包中的地址,然后决定如何传送,是在网络间起网关作用的网络设备。是在网络层使用的中间设备。交换机数据交换机也叫交换式集线器,是一种工作在

2021-01-16 13:14:13 2851

原创 zigbee通信详解及基于zigbee甲烷温度检测

摘要很久之前就想接触下zigbee,经过一段时间,终于小有所成。zigbee无线组网通信。zigbee开发板内核是基于51的,可以认为是单片机加无线通信模块。zigbee上面cc2530芯片集成了8051内核,集成了一片增强型51单片机,是TI公司生产的。只要有51单片机的编程基础,就可以玩转它。zigbee组网zigbee可分为协调器、路由器、终端节点。协调器每个zigbee网络只允许有一个zigbee的协调器。协调器首先选择一个信道和网络标识(PAN ID),然后开始组建网络。因为协调器是整个

2021-01-07 10:47:57 619 1

原创 自身技能总结篇

目前已经大四了,明年毕业就成了应届毕业生了。这段时间也在疯狂的做项目,弥补自身的不足。觉得不能眼高手低,要清楚了解自己会什么,掌握了哪些技能。让企业能看到自身的价值,这才是重中之重。总不能别人问你会什么,你不知道自己会什么,没有总结。没有方向、目标的努力也是可怕的。一、Linux方向1、熟悉掌握Linux常用操作命令2、会smaba共享服务器的搭建3、懂得交叉编译4、熟悉linux嵌入式操作系统平台编程,掌握了多线程、多进程、信号量等操作系统基础知识5、掌握c语言编程,熟悉ubuntu 开发工具

2020-12-22 13:59:48 319

原创 stm32指纹、蓝牙识别门禁系统项目详解

摘要本着做stm32项目的初心,在11月份中旬便开始着手了这个项目的开展,如今已经12月份下旬了,也是将近一个多月了。也算是接近项目的尾声了,在这段时间,学到了不少东西,记录下来,也算是对自己的一个交代吧。项目物料清单项目物料清单很重要,在做项目的前期,找了一些资料,大部分都是没有物料清单的,这其实让项目很难继续进行下去的。没有资料更是不可能做项目的,任何人都是如此,凭空做项目除非之前有了相关的经验。物料清单如下:1、主控板:stm32f103c8t6最小系统板2、oled显示屏(七针spi)3

2020-12-21 14:33:27 5414 12

原创 stm32两轮平衡小车项目详解

摘要这个项目是在20年11月初开始的,当时的我很迷茫,本应该去实习的我在线上培训,觉得无聊,便有了自己一人做项目的想法。也没想到这个项目做了将近整整一个月,才差不多做了出来。也是准备做两个项目的,这是第一个而已。项目所需物料清单主控板用到了c8t6、小车底盘(这个硬件是这项目于最贵的物料了),可以用大鱼电子、或者平衡小车之家的。由于经费的原因,我买了两个带电机的车轮、加上了亚克力板,勉强搭成了小车底盘。为了布线方便,我用到了面包板。由于对焊接并不是很熟练,没用到洞洞板,这算是这个项目不大光彩的地方。用

2020-12-08 20:53:35 9632 7

原创 STM32两轮自平衡小车物料采购清单

最近辞职在家,想学点东西,看了视频教程,觉得枯燥无聊,想着是嵌入式方向的,怎么也要会一些项目吧,便准备开始着手做一些项目,就先从stm32的两轮自平衡小车开始入手吧。以下物料都是自己采购的。主控板是stm32zet6的。1、主控板stm32zet62、车轮加电机模块(两个)3、TB6612FNG模块4、mpu6050模块5、HC-06蓝牙模块6、12v锂电池7、杜邦线8、稳压模块9、铜螺柱10、平衡小车亚克力板还有一些业余的一些工具,比如剪刀、绝缘教导、螺母、螺丝等

2020-11-15 00:38:37 2121

原创 近期面试常见问题汇总

在杭州一段时间面过几家公司,对于所涉及到的题目进行了汇总。主要有以下几个问题。一、野指针1、什么是野指针野指针是指指针指向的位置是不可知的,指针变量定义时未初始化。2、野指针产生原因1)、指针定义时未初始化,其值是随机的,意味着指向一个地址是一个不确定的变量2)、指针被释放时,没有被置空,free()或delete();3)指针操作超越变量作用域,不要返回指向栈内存的指针或引用,因为栈函数结束会被释放。3、野指针产生危害1)、指向不可访问的地址,会触发段错误。2)、掩盖程序上的错误。3

2020-11-13 15:58:10 101

原创 总线、通信接口、串行通信、并行通信详解

在杭州的一段时间,发现知道的越多,不懂得越多。索性把这将四个多月的收获到的知识,总结一下吧,不再去盲目的获取一些新知识了。总线、通信接口是刚来杭州的时候,一直纠结的概念,而串行通信、并行通信是很重要的一个知识点。总线刚接触到总线,是看到SPI、IIC总线、CAN总线,这是个高频出现的知识点,对总线就想了解下。总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照传输信息种类,可分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址、和控制信号。通信接口通信接口用来数

2020-11-13 13:34:41 2517

原创 IIC通信协议详解

对于stm32外设的理解还是不够深,也许也是没有沉淀的原因吧,对于嵌入式行业来说,通信协议是挺重要的,今天花一段时间好好讲一下IIC总线通信协议。也是方便日后查看吧。IIC总线是串行总线,两根线,时钟线SCL和数据线SDA。从以下六个方面来讲解IIC通信协议。数据主要是通过SCL、SDA线1高低电平的转变来进行传输的。1、空闲状态IIC总线的SCL和SDA两根信号线,同时处于高电平,规定为总线空闲状态。2、起始信号SCL为高电平,SDA由高电平到低电平的跳变,启动信号是一种电平跳变时序信号,而不是

2020-11-07 11:32:32 734

原创 基于Ncurse图形库贪吃蛇小游戏

在Linux环境下,基于Ncurse图形库的C语言小游戏。主要用到了C语言链表还有结构体知识。一、贪吃蛇地图代码实现void gamePic(){ int hang; int lie; move (0,0); for(hang=0;hang<20;hang++){ if(hang==0){ for(lie=0;lie<20;lie++){ printw("--");} printw("\n"); for(

2020-11-01 13:29:06 137 1

STM32智能平衡小车项目v1.0.zip

平衡小车是用stm32做的,资料包括源码、物料清单、模块接线,模块资料,代码有注释。使用MPU6050姿态传感器模块获取小车的角度,通过串口将提取的信息送给M3,通过M3中的PID算法来计算PWM,将PWM输出至舵机来控制小车的转角,通过M3中的算法控制TB6612FNG电机驱动器,使得电机工作。周期读取自行车角度及MPU6050中数据、使得舵机、电机不断调整,从而获得动态平衡。

2020-11-16

工作周报-7.31.xlsx

6月24日,我们分别在临安晓得菜馆、西苑面馆安装了一台油烟在线监控设备,设备号分别是: SQY191201107、 SQY191201079。7月10日,我们在晓得菜馆新增了一台设备,设备名是SQY191201024,具体信息如下:

2020-08-04

空空如也

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

TA关注的人

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