自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(176)
  • 资源 (8)
  • 收藏
  • 关注

原创 移动机器人的控制逻辑全解析。

4. 定位与导航:通过使用全球定位系统(GPS)、惯性测量单元(IMU)和地图等技术,机器人可以确定自身的位置和方向,并规划出最优的路径。1. 全局规划:在已知环境地图的情况下,机器人可以使用全局规划算法,如 A* 算法、Dijkstra 算法等,找到从起点到终点的最短路径。2. 局部规划:在未知或部分已知的环境中,机器人可以使用局部规划算法,如模糊逻辑、神经网络等,根据实时感知的环境信息规划出最优路径。2. 地图构建:机器人通过传感器数据和定位信息,构建出环境的地图模型,包括障碍物、可行区域和路径等。

2024-02-18 13:11:58 1088

原创 ADC采集电路前级的电压跟随器有啥用?

实际ADC端也有一个电阻值,假设这个电阻值为10K,这个ADC端电阻值和分压电阻10K并联后,阻抗变成5K,实际ADC采集到的电压值为1V。在实际的项目中,这样采集到的电压值和理论电压值误差较大,在软件设计中,通过程序对采集到的值进行补偿,补偿后的电压值和实际电压值一样。后级电路的输入电压值,等于电压跟随器输出端的电压值。采集到的电压值和实际电压值不一致的原因,主要ADC采集端也有一个阻抗,外部分压电阻和ADC端电阻值并联后,整个分压电阻值发生变化,因此ADC采集到电压值和理论值不一样。

2024-02-18 11:24:53 345

原创 30种EMC标准电路

01 AC24V接口EMC设计标准电路02 AC110V-220V EMC设计标准电路03 AC380V接口EMC设计标准电路04 AV接口EMC设计标准电路05 CAN接口EMC设计标准电路06 DC12V接口EMC设计标准电路07 DC24V接口EMC设计标准电路08 DC48接口EMC设计标准电路09 DC110V接口EMC设计标准电路010 DVI EMC设计标准电路011 HDMI接口EMC设计标准电路012 LVDS接口EMC设计标准电路013 PS2接口EMC设计标准电路014 RJ11 EM

2024-02-18 11:23:22 208

原创 嵌入式基础知识-组合逻辑与时序逻辑电路

本篇介绍了组合逻辑电路与时序逻辑电路的基础知识,组合逻辑电路中,介绍了组合逻辑的表示方法,各种基础门电路、常用的组合逻辑电路等;时序逻辑电路中,首先介绍了时钟信号的类型,然后介绍了触发器、寄存器、移位器、计数器的基础知识点。

2024-02-18 11:21:43 711

原创 硬件电路设计中最头疼的事,就是它!

这里通过从尾到头逐层分析,先拆掉MIC再测试,发现这“哒哒”声还在,说明问题还是出现在前面的线路上,当断开前面的C46和C47这两个电容时再测,这时这“哒哒”声消失了,将C47补上,这“哒哒”声也是没有了,那将C47去掉而补上C46呢?(3)因为WIFI天线用的是陶瓷天线,在测试中当主板的WIFI模块面盖在桌面时,这噪声很容易出现,因为主板WIFI面盖在桌面后会将WIFI天线的辐射空间减小,WIFI信号通过桌面反射到MIC线路上,从而干扰到音频信号。这“哒哒哒”的噪声情况总算弄明白了。

2024-02-18 11:20:41 238

原创 STM32单片机的C语言基础

typedef用于为现有类型创建一个新的名字,或称为类型别名,用来简化变量的定义。define是C语言中的预处理命令,它用于宏定义(定义的是常量),可以提高源代码的可读性,为编程提供方便。这里加了U以后,系统编译时就不进行类型检查,直接以U的形式把值赋给某个对应的内存,如果超出定义变量的范围,则截取。执行一次该代码,就会使PB5的输出状态翻转一次,如果我们的LED接在PB5上,就可以看到LED闪烁了。这里提一下,24000000U中的U表示无符号整型,常见的,UL表示无符号长整型,F表示浮点型。

2024-02-18 11:19:16 1048

原创 AltiumDesigner元件库之使用Ultra Librarian自动生成

通常一些电子元器件大厂的官网都会提供自家芯片的模型,器件简单,管脚较少可以自行根据规格书绘制,如果芯片比较复杂,功能管脚比较多,使用官方发布的模型生成原理图和PCB封装比较稳妥不易出错。利用官方发布的芯片模型文件及对应工具软件,可以自动生成各种EDA工具的原理图和PCB封装。1)到芯片官方网站下载器件的bxl格式文件,比如ADI 官网的ARM Cortex核单片机,ADUCM360BCPZ128.bxl。3)根据生成的脚本,导入AD生成原理图和PCB库。最终可以看到利用脚本生成的原理图和PCB封装库。

2024-02-05 09:32:58 289

原创 单片机的50个电路

单片机电源声音模块收音机485蓝牙光耦can光敏电阻单片机矩阵单片机电路时钟ADC接口电路红外发射显示模块红外接收蜂鸣器驱动流水灯usb供电烧录电路数码管EEPROMLCD1602电路数码管max485红外开关译码器移位寄存器步进电机控制复位电路下载电路电源模块温度模块红外热敏电阻交通灯时钟555彩屏矩阵按键单片机。

2024-02-04 16:06:58 4813

原创 电工需要掌握的电路

1、通用型变频器接线示意图2、三线式运转控制台达正反转电路图3、单相220V接线实物图、三相380V接线实物图4、变频器操作面板功能介绍5、风暖浴霸实物接线电路图6、车辆出入门闸检测实物接线电路图7、电位器实现两台变频器同步调频实物接线图8、门禁系统是如何工作的实物展示图9、无线水位控制器实物接线图10、路灯配电箱时控开关控制实物接线图11、变频器的实物接线电路图12、三相四线互感器式电表实物接线电路图13、门禁系统的实物接线电路图14、ABB变频恒压供水控制实物接线电路图15、五开六线制浴霸开关实物接线电

2024-02-04 16:04:32 153

原创 99例电气实物接线及52个自动化机械手动图

8.电机长动基本控制接线(不安全、保险容易引起缺相)22.带电源指示灯和故障指示灯的电机控制接线。27.电机三相电缺相保护电路接线(不安全)6.220V浮球开关供水接线(不安全)11.电机正反转接触器零线互锁控制接线。9.电机点动及长动控制接线(不安全)10.电机三地自锁控制接线(不安全)24.电机自锁长动控制接线(不安全)28.光电开关控制报警接线(不安全)90.三相电动机正反转主回路控制接线。97.正反转均需要星三角启动控制接线。13.电动机带热保护的点动控制接线。20.双重互锁的电机正反转控制接线。

2024-02-04 15:59:41 1096

原创 PPT讲解机械手的控制

2024-02-04 15:55:17 80

原创 快速掌握西门子S7-1200 PLC的PID控制工艺

2、使用“运行中自调节”功能优化控制器,可以实现最佳调节。1、使用“首次启动自调节”功能优化控制器。4、通过手动设置控制器的输出值来测试过程。3、用于趋势视图监视当前的闭环控制。

2024-02-04 15:52:57 242

原创 嵌入式基础知识-逻辑覆盖测试用例设计

本篇介绍了软件测试中,白盒测试中逻辑覆盖的各种实例情况,包括语句覆盖SC、判定覆盖DC、条件覆盖CC、条件判定覆盖C/DC、条件组合覆盖MCC、路径覆盖PC、修正的条件判定覆盖MC/DC的实例。

2024-02-04 15:50:17 766

原创 STM32单片机的C语言基础

typedef用于为现有类型创建一个新的名字,或称为类型别名,用来简化变量的定义。define是C语言中的预处理命令,它用于宏定义(定义的是常量),可以提高源代码的可读性,为编程提供方便。这里加了U以后,系统编译时就不进行类型检查,直接以U的形式把值赋给某个对应的内存,如果超出定义变量的范围,则截取。执行一次该代码,就会使PB5的输出状态翻转一次,如果我们的LED接在PB5上,就可以看到LED闪烁了。这里提一下,24000000U中的U表示无符号整型,常见的,UL表示无符号长整型,F表示浮点型。

2024-02-04 11:52:33 631

原创 HAL库硬件SPI点亮板载LCD屏幕

1.1、HAL库硬件SPI 在cubemx中的配置及注意事项;1.2、HAL库SPI详解与结构介绍;1.3、实现硬件SPI驱动板载ST7789显示屏,240*240像素;

2024-02-02 10:53:17 812

原创 嵌入式开发输出调试信息的几种实用方法

输出调试信息是软件开发中必不可少的调试利器,在出现bug时如果没有调试信息将会是一件令人头痛的事。本文主要介绍在嵌入式开发中用来输出 log 的方法,这些方法都是在实际开发过程中使用过的。嵌入式开发的一个特点是很多时候没有,或者没有,常规的打印log到文件的方法基本不适用。最常用的是通过串口输出 uart log,例如51单片机,只要实现串口驱动,然后通过串口输出就可以了。这种方法实现简单,大部分嵌入式芯片都有串口功能。但是这样简单的功能有时候却不是那么好用,比如:一款新拿到的芯片,?

2024-01-31 11:26:59 1025

原创 Linux其实不难,做个四层板设计的终端设备就搞懂了!

作者想学习Linux,于是边学边做,成功开源出了一个——

2024-01-31 11:24:20 1082

原创 用STM32手搓一个体温计

市面上大多额温计、测温计精度。

2024-01-31 11:01:15 1003

原创 电池-电量监测基础知识

假设我们知道一款锂电池的满电量电压是4.2V,完全放电电压是3.2V,那么我们就可以用电压来判断电池是否充满或是否放尽,实际上电池电压和电量有一定的函数关系,只需要测出这个函数关系我们就可以用单片机读取电池电压来判断剩余电量。如图1,一般MCU的ADC输入电压不高因此需要电阻分压,但分压电阻自身又带来了一定的能耗,如果是在低功耗的设备上是万万不能接受的,而如果提高了分压电阻阻值虽然可以降低功耗,但等效阻抗增大导致ADC采样不准,因此需要加(基于电压的电量监测的优势是可以在无负载的情况下进行电量监测。

2024-01-30 17:57:02 331

原创 DIY_SmartWatch_S3

​​​​​简介:成熟的智能手表方案DIY;采用乐鑫ESP32-S3,支持蓝牙和WIFI。240x280彩色LCD触摸屏;内置9D运动睡眠传感器,支持SPI接口扩展在线心率,血氧等健康传感模组;支持USB TypeC;开源协议: TAPR Open Hardware License描述。

2024-01-30 16:30:03 913

原创 一文弄懂C语言的Q格式

Q格式是二进制的定点数格式,相对于浮点数,Q格式指定了相应的小数位数和整数位数,在没有浮点运算的平台上,可以更快地对浮点数据进行处理,以及应用在需要恒定分辨率的程序中(浮点数的精度是会变化的)。需要注意的是,Q格式是概念上小数定点,通过选择常规的二进制数整数位数和小数位数,从而达到所需要的数值范围和精度,这里可能有点抽象,下面继续看介绍。本文介绍了Q格式的表示方式以及相应的运算,另外需要注意在Q格式运算的时候,两者定标必须相同,对于数据的溢出检测也要做相应的处理。

2024-01-29 15:44:26 818

原创 用C语言写一个耦合性低、完全可移植的轻量级菜单框架

同级菜单以数组的方式体现,父菜单和子菜单的关联则使用链表实现。数组元素内容有:菜单选项字符串描述(多语种可设置)菜单选项进入回调函数:当前菜单选项进入时(从父菜单进入)需要执行一次的函数菜单选项退出回调函数:当前菜单选项进入后退出时(退出至父菜单)需要执行一次的函数菜单选项重加载回调函数:当前菜单选项每次加载时(从父菜单进入或子菜单退出)需要执行一次的函数菜单选项周期调度回调函数:当前菜单选项的周期调度函数菜单选项的扩展数据链表内存可以选择采用动态内存分配或者数组实现。

2024-01-26 17:18:00 782

原创 PCB制板基础知识

PCB(PrintedCircuitBoard),中文名称为印制电路板,又称印刷电路板、印刷线路板,是重要的电子部件,是电子元器件的支撑体,是电子元器件电气连接的提供者。由于它是采用电子印刷术制作的,故被称为“印刷”电路板。1.提供集成电路等各种电子元器件固定、装配的机械支撑。2.实现集成电路等各种电子元器件之间的布线和电气连接(信号传输)或电绝缘。提供所要求的电气特性,如特性阻抗等。3.为自动装配提供阻焊图形,为元器件插装、检查、维修提供识别字符和图形。

2024-01-26 17:12:12 89

原创 如何训练和导出模型

目标网络是DQN算法中的关键创新之一。在DQN中,每隔一定的时间步,目标网络的参数会被更新为在线网络的参数,这样可以减少学习过程中的震荡和发散问题。在不断变化的数据(如强化学习中的状态和奖励)上训练一个网络时,如果使用即时更新的数据来计算目标值,会导致训练目标和网络参数之间的紧密耦合,这种耦合会使得学习过程变得非常不稳定。在传统的Q学习中,Q表在每一步更新时都会用到,这会导致目标Q值和预测Q值在相同的过程中不断变化,从而可能导致学习过程不稳定。这个网络称为Q网络,它的输入是状态,输出是每个可能动作的Q值。

2024-01-26 17:09:03 956

原创 Multisim的下载与安装

回到最开始解压的【Multisim14.0】文件夹中,单击【NILicense Activator 1.2】,右击选择【以管理员身份运行】。回到最开始解压的【Multisim14.0】文件夹中,右击【Chinese-simplified】文件夹,然后选择【复制】。右击空白处,选择【粘贴】。】下找【NI Multisim 14.0】,并把【NI Multisim 14.0】拖至桌面即可。【Full Name】和【Organization】后面的文本框任意填写,然后单击【Next】单击【开始】菜单,在【

2024-01-25 16:15:25 1135

原创 贝叶斯思维

贝叶斯思维,是基于贝叶斯定理的一种思考方式。它教会我们如何在面对不确定性时,结合先验知识和新信息来不断更新我们的信念。俗话说“吃一堑长一智”,我们通过新的经历来让我们对世界认识地更加准确,这是聪明人的做法;如果总是“重蹈覆辙”那么就不够聪明。听起来贝叶斯思维是一个很“高级”的名词,其实在生活中最直接的体现就是人能从经验中学习,做到有效地反思和行动。

2024-01-18 12:46:26 925

原创 C语言运算符详解

右移运算符是“<<”,它是双目运算符,它可以将运算符左边的操作数向右移动指定的位数,移动的位数由运算符右边的操作数给出,移动方向为从右到左,移动到右边界之外的多余二进制位会被丢弃,并从左边移入0(无符号整数),对于有符号数整数,需要注意符号位的处理,如果移位的操作数是正数,右移时会在左边填充 0,如果是负数,右移时会在左边填充 1。条件结构的核心是条件判断,在C语言中,条件判断可以使用关系表达来实现,关系表达式的计算结果返回逻辑真或逻辑假,在C语言中非0数值表示逻辑真,数值0表示逻辑假。

2023-11-23 10:23:13 165

原创 实例讲解Simulink的MATLAB Function模块

MATLAB Function可以将MATLAB内建函数编写的M函数生成C代码,如 sum,length , sqrt等(支持代码生成的M函数详细列表请搜索MATLAB自带 Help文档的Func-tions Supported for C/C++Code Generation — Alphabetical List.),根据Simulink的运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的前次计算的终值如何传递到当前计算周期来是个问题,可以使用。

2023-11-22 15:08:47 1043

原创 PCB抄板的一些方法

PCB抄板的技术实现过程简单来说,就是先将要抄板的电路板进行扫描,记录详细的元器件位置,然后将元器件拆下来做成物料清单(BOM)并安排物料采购,空板则扫描成图片经抄板软件处理还原成pcb板图文件,然后再将PCB文件送制版厂制板,板子制成后将采购到的元器件焊接到制成的PCB板上,然后经过电路板测试和调试即可。所以我们按“选项”——“层设置”,在这里关闭显示顶层的线路和丝印,只留下多层的过孔。1. 拿到一块PCB,首先在纸上记录好所有元气件的型号,参数,以及位置,尤其是二极管,三级管的方向,IC缺口的方向。

2023-11-22 14:58:06 119

原创 如何编写分层清晰、通用性好的LCD驱动?

在讨论怎么写LCD驱动之前,我们先大概了解一下嵌入式常用LCD。概述一些跟驱动架构设计有关的概念,在此不对原理和细节做深入讨论,会有专门文章介绍,或者参考网络文档。

2023-11-17 16:59:35 93

原创 搭建成功simulink-stm32硬件在环开发环境

2021b:YF_STM32_Alpha 1R4(参考自STM32 Nucleo F103RB官方开发板)YF_STM32_Alpha开发板STM32 Nucleo F103RB 开发板。

2023-11-15 18:36:59 1098 1

原创 C语言与C++的区别和联系

C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。7、constC语言中被const修饰的变量不是常量,叫做常变量或者只读变量,这个常变量是无法当作数组下标的。然而在C++中const修饰的变量可以当作数组下标使用,成为了真正的常量,这就是C++对const的扩展。

2023-11-10 14:28:36 273

原创 嵌入式软件分层模块封装例子

以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。使用过Linux的童鞋们肯定知道linux系统无法直接操作硬件层,打开linux或者rt_thread代码会发现代码中都会有device的源文件,没错,这就是驱动层。这样就可以实现软硬件分层了,是不是非常好用!

2023-11-10 14:27:14 65

原创 【嵌入式框架】搭建调试输出、建立时间系统

Zorb Framework是一个基于面向对象的思想来搭建一个轻量级的嵌入式框架。搭建Zorb Framework的目的是为在不能运行Linux的芯片上快速开发应用,不用反复造轮子。Zorb Framework的初步设计功能有:1、时间系统功能zf_time2、环形缓冲区功能zf_buffer3、列表功能zf_list4、状态机功能zf_fsm5、事件功能zf_event6、定时器功能zf_timer7、任务功能zf_task。

2023-11-05 13:04:14 178

原创 FPGA从入门到精通(二十)SignalTapII

给观察信号设置触发条件,选中某个信号后右击弹出触发条件选择菜单,根据需求选择触发条件:“Don’t Care ”代表任意条件都触发,“Low” 表示信号低电平时触发,“Falling Edge”表示信号下降沿时触发,“Rising Edge ”表示信号上升沿时触发,“High” 表示信号高电平时触发,“Either Edge ”表示任意沿触发,如果是总线可以直接输入具体的值。Step6:捕获信号。之前的工程我们是做仿真,设置激励,观察输出波形去判断代码没有问题,但事实上我们真实的需求是综合后的代码下载到。

2023-10-24 12:21:23 522

原创 C语言指针详解——必备7大知识点

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。(每个内存单元都有地址)就好比电脑是我们的学校,内存就是学校的一个宿舍楼,而一个内存单元就代表宿舍楼中的一个宿舍,而宿舍的门牌号就表示一个地址。每个地址标识一个字节,那我们就可以给(允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与 指向第一个元素之前的那个内存位置的指针进行比较。*ppa通过对ppa中的地址进行解引用,这样找到的是pa,*ppa其实访问的就是pa;

2023-10-23 09:46:29 148

原创 从零开始构建基于YOLOv5的目标检测系统

(4)其中torch==1.9.0+cu111 torchvision==0.10.0+cu111表示torch和torchvision的版本以及对应的cuda版本,-f https://download.pytorch.org/whl/torch_stable.html表示从上面网址下载,-i https://pypi.tuna.tsinghua.edu.cn/simple 是使用清华镜像源。(7)最后输入python base_camera.py打开软件界面。

2023-10-20 12:15:30 557

原创 FPGA从入门到精通(二十)SignalTapII

给观察信号设置触发条件,选中某个信号后右击弹出触发条件选择菜单,根据需求选择触发条件:“Don’t Care ”代表任意条件都触发,“Low” 表示信号低电平时触发,“Falling Edge”表示信号下降沿时触发,“Rising Edge ”表示信号上升沿时触发,“High” 表示信号高电平时触发,“Either Edge ”表示任意沿触发,如果是总线可以直接输入具体的值。Step6:捕获信号。之前的工程我们是做仿真,设置激励,观察输出波形去判断代码没有问题,但事实上我们真实的需求是综合后的代码下载到。

2023-10-20 12:14:26 333

原创 什么是单片机最小系统

然而,相对于外部时钟源,内部时钟源的精度和稳定性可能较差,因此在对时钟精度有较高要求的应用中可能不够理想。在设计和制造过程中,确保准确、清晰的丝印信息是一个好的实践,以提高产品的可追溯性和可维护性。去耦电容能够迅速释放储存的电荷,提供额外的电流,从而防止电源电压的瞬时下降,保持系统的稳定性。例如,一些低功耗应用可能更适合使用低频率的内部时钟源,而对于高性能计算,可能需要更高频率的外部时钟源。芯片的丝印信息是印刷在芯片表面的标识文字或图案,用于标识芯片的型号、制造商、批次信息等。

2023-10-19 09:28:32 222

原创 总结 STM32 常见的一百多个知识点

124、加速度计测得的加速度的方向和设备设定的坐标系是相反的,因为原理表明在测量力的时候采用的是非惯性系参考系,而我们高中时代研究的坐标系是惯性系参考系,前者在物体进行运动产生加速度时,假想一个与速度方向相反的力作用在物体上,这个力就是惯性力;而ADDSET指的是地址建立时间,指的是片选之后到读/写操作之前的时间,这是针对SRAM来说的,如果操纵的是TFT,不存在地址线,所以此时的ADDSET就是读/写信号结束到RS电平的转换时间。实际起作用的是影子寄存器,而程序员操纵的则是自动装载寄存器。

2023-10-18 17:55:13 522

表管阀件介绍,包括结构安装材质标准类型等,设备工程师、机械工程师必备

仪表管阀件介绍,包括结构安装材质标准类型等表管阀件介绍,包括结构安装材质标准类型等,设备工程师、机械工程师必备

2023-09-27

android开发工具和手册

android开发工具和手册

2023-04-10

基于粒子群优化的神经网络PID控制

基于粒子群优化的神经网络PID控制

2023-03-21

BAS与三个经典智能优化算法对比(遗传、粒子群、模拟退火)

main:BAS优化算法在23个测试函数中的表现 Compare:BAS与三个经典智能优化算法对比(遗传、粒子群、模拟退火)

2023-03-21

模糊PID控制的matlab仿真模型

模糊PID控制的matlab仿真模型

2023-03-13

基于PSO算法的PID控制器设计与实现论文

基于PSO算法的PID控制器设计与实现论文

2023-03-13

BAS Fuzzy Matlab Simulink仿真

BAS Fuzzy Matlab Simulink仿真

2023-03-13

FPGA面试题 Verilog HDL 学习资料

FPGA学习资源,Verilog HDL 面试编程题

2022-07-04

STM32F4 步进电机 S加减速.zip

STM32F4 部件电机 S型算法加减速 库函数版

2021-12-09

stm32步进电机三轴联动 带插补和加减速控制.zip

CNC stm32 步进电机 三轴联动 带插补和加减速

2021-12-09

三轴梯形加减速_机械原点.zip

实现功能 单个步进电机使用梯形算法,三个步进电机使用插补算法组成机械臂,实现三轴联动。每个步进电机带3个限位(正负极限、零点检测)。

2021-12-08

梯形算法驱动步进电机.zip

步进电机梯形算法

2021-11-05

C语言学习资料.zip

C语言学习资料.zip

2021-10-13

使用IIC协议读写24c02并在LCD上显示结果

使用IIC协议读写24c02并在LCD上显示结果

2021-09-27

空空如也

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

TA关注的人

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