自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 ARM32开发--GPIO--LED驱动开发

前言:在这个快节奏的开发环境中,面对紧迫的项目截止日期和有限的资源,我们作为软件工程师需要具备快速解决问题的能力。本项目要求我们设计一个基于STM32的BSP驱动,以实现一个智能充电状态显示系统,该系统通过四个LED灯来展示充电状态和电量百分比。尽管在产品最终的电路板还未完成的情况下,我们只有开发板可以使用,但我们仍然面临着快速完成这个任务的压力。在这个过程中,我们将采用模块化的方法来编写代码,以确保其可读性和可维护性。我们将定义一系列接口,以便其他开发者在将来可以轻松地与我们的驱动代码集成。

2024-06-07 08:51:41 1144

原创 ARM32开发--GPIO--LED点灯

学习点亮LED灯是嵌入式系统开发中的基础操作之一,通过掌握不同的点灯方式和驱动层构建思想,可以深入了解硬件与软件之间的协作机制,提升结构体定义和代码封装能力。本文将介绍两种点亮LED灯的方式,灌入电流法和输出电流法,以及通过扩展板点灯实现LED驱动功能的完整代码实现。通过对点亮LED灯的两种方式的介绍,我们了解到灌入电流法和输出电流法各自的优缺点,以及在实际应用中的适用场景。

2024-06-07 08:47:06 940

原创 ARM32开发--GPIO总线与时钟

在现代计算机系统中,总线框图是一个至关重要的概念,它帮助我们理解不同硬件组件之间的连接和通信方式。AHB总线和APB总线作为计算机系统中常见的总线架构,扮演着连接处理器、内存和外设等组件的重要角色。同时,时钟树的设计和外部晶振的倍频操作也是确保整个系统正常运行的关键步骤。本文将深入探讨这些概念,帮助读者更好地理解计算机系统中的总线结构和时钟设计。总线框图中的AHB总线和APB总线扮演着连接计算机系统中不同硬件组件的角色,类似于为各个家庭成员提供交通工具的功能,确保信息和数据能够高效传输。

2024-06-07 08:42:49 953

原创 GD32/STM32系列GPIO工作模式

在嵌入式系统开发中,对于GPIO(通用输入输出端口)的配置和使用是至关重要的。不同的GPIO配置方式可以实现不同的功能,包括输入(浮空、上拉、下拉、模拟输入)和输出(推挽、开漏、复用推挽输出、复用开漏输出)等。正确的GPIO配置可以确保信号的稳定传输和处理,使系统能够正常工作并与外部设备进行有效通信。通过对GPIO的不同配置方式进行了解和掌握,可以更好地满足系统对输入输出信号的需求。在配置GPIO输入时,可以选择浮空输入、上拉输入、下拉输入或模拟输入,以适应不同的接口要求和外部信号条件。

2024-06-06 10:37:34 1159

原创 ARM32开发--GPIO输入模式

在数字电路设计和嵌入式系统开发中,理解输入信号的处理方式对确保系统稳定性和可靠性至关重要。不同的输入处理方式包括上拉输入、下拉输入、浮空输入和模拟输入,它们在不同场景下具有各自的应用特点和作用。而TTL施密特触发器则是常用于去除噪声和提供稳定输出信号的重要元件。通过适当选择和配置输入方式,可以有效地管理输入信号的稳定性和准确性,使系统在各种情况下都能正常工作。上图为GPIO输入的基本示意图,其中包含了上拉电路,下拉电路,模拟信号处理,数字逻辑信号接收。

2024-06-06 10:33:45 1385

原创 GD32单片机开发--点亮第一盏灯

在本次项目中,我们将学习如何点亮LED1灯并进行闪烁的操作,涉及到了基本的开发流程、程序编译、程序烧录以及GPIO初始化流程。通过本次项目,我们成功掌握了基本的开发流程,代码编写、程序编译和烧录的步骤,同时深入了解了GPIO的初始化流程。我们通过点亮LED1灯并进行闪烁的任务,实践了这些知识点,为未来的嵌入式开发工作积累了经验。

2024-06-06 10:17:32 1112

原创 keil下载及安装(社区版本)

Keil是一家专业的嵌入式系统开发工具提供商,其主打产品Keil MDK(Microcontroller Development Kit)集成了多种芯片架构的开发环境,被广泛应用于嵌入式系统开发领域。在2022年初,Keil推出了MDK社区版,为电子爱好者、学生、学者等非商业用户提供免费的开发工具,以支持ARM Cortex-M架构的产品开发。在2022年初,Keil官方推出了MDK社区版(MDK-Community edition)特点免费没有代码大小限制。

2024-06-06 08:07:09 2901

原创 GD32介绍及环境搭建--开发板介绍

本文将介绍如何搭建和连接天空星GD32F407VET6开发板及相关硬件设备的焊接步骤和连接方法。通过清单中列出的设备,我们将详细讨论如何正确焊接排针、烧录器和设备间的连接,以确保设备安全、正常运行。重点说明连接顺序和焊接注意事项,帮助读者避免常见错误,确保焊接效果正确。在整个过程中,请务必谨慎操作,确保设备的正确性和安全性。通过本文的学习,读者了解了在搭建天空星GD32F407VET6开发板和相关设备连接过程中的关键步骤和注意事项。

2024-06-05 08:46:29 1811

原创 STC8增强型单片机开发--模板代码

知不足而奋进 望远山而前行。

2024-06-05 08:30:09 768

原创 STC设计与RTX51--RTX51操作系统

理解操作系统功能学会使用RTX51操作系统如果想从现在起等待一段时间,用K_TMO如果想做周期性动作,用K_IVL。

2024-06-04 20:01:15 1195

原创 STC设计和RTX51--核心板设计

在电子设计和PCB布局中,熟练掌握STC8H最小系统板设计、查阅芯片手册以及串口芯片外围电路的技能是至关重要的。通过原理图设计和PCB布局布线的工作,我们可以确保电路的功能性和连接方式符合需求,进而通过PCB打样和开发板验证验证设计的可靠性和性能。同时,了解线性稳压器LDO、电压基准芯片以及串口芯片等相关内容,有助于我们设计稳定可靠的电子产品和系统。通过本次学习内容,我们深入了解了PCB设计流程中的原理图设计和PCB布局布线的重要性,以及串口烧录和USB烧录等相关技术方案。

2024-06-04 19:57:55 1052

原创 STC8增强型单片机进阶开发--EEPROM读写

EEPROM是一种可擦写可编程只读存储器(Electrically Erasable Programmable Read-Only Memory)的缩写。它是一种非易失性存储器,可以在不需要外部电源的情况下保持存储数据。与ROM不同,EEPROM可以通过电子擦除和编程来修改存储的数据,因此它是一种可重写的存储器。EEPROM通常用于存储需要频繁修改的数据,例如系统配置信息、用户设置、校准数据等。由于EEPROM可以在系统运行时进行读写操作,因此它在许多应用中都具有很高的实用价值。

2024-06-04 18:18:59 1579

原创 STC8增强型单片机进阶开发--矩阵键盘

矩阵键盘作为一种常见的数字输入设备,在各类电子产品和嵌入式系统中广泛应用。通过多行多列的按键组成矩阵结构,实现了在有限的引脚数量下输入大量信息的功能。本文将深入探讨矩阵键盘的原理、基本结构和按键扫描方法,并介绍如何通过编程实现矩阵键盘的功能。读者将从中了解矩阵键盘的工作原理,掌握按键状态检测的方法,同时学会如何通过编程实现矩阵键盘的应用,为相关电子项目的设计与开发提供帮助。通过本文的学习,我们深入了解了矩阵键盘的原理和基本结构,掌握了矩阵键盘的按键扫描方法和编程实现技巧。

2024-06-04 18:15:24 896

原创 STC8增强型单片机进阶开发--OLED显示器(SPI)

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

2024-06-04 18:12:24 1018

原创 STC8增强型单片机进阶开发--外部中断(EXTI)

在嵌入式系统开发中,外部中断是一种重要的事件处理机制,能够及时响应外部信号的变化。了解外部中断的触发机制、中断编写逻辑以及PCB中断设计注意事项对于开发人员来说至关重要。本次学习将重点探讨STC8H单片机中的外部中断机制,以及如何编写外部中断的代码逻辑。通过本次学习,我们深入了解了STC8H单片机中外部中断的相关知识,包括外部中断的触发方式、中断编写逻辑以及PCB中断设计的注意事项。在实际应用中,我们可以通过配置引脚和中断响应函数来实现外部中断的处理,从而实现对外部事件的及时响应和处理。

2024-06-04 08:23:58 1146

原创 STC8增强型单片机进阶开发--I2C总线

随着嵌入式系统和电子设备的不断发展,串行通信协议如I2C在各种硬件之间的数据交换中扮演着至关重要的角色。在本文中,我们将深入探讨I2C通讯协议的基本原理、工作原理和设计要点,旨在帮助读者更好地理解和应用I2C技术。通过学习本文所介绍的I2C通讯协议相关知识,我们对I2C总线的结构、工作原理、速度、信号电平和开发流程有了更深入的了解。掌握了这些基本概念后,我们能够更加灵活地应用I2C在实际的嵌入式系统中,实现设备间的稳定、高效的数据传输,从而为电子设备的设计和开发提供更多可能性和便利性。

2024-06-04 08:20:14 1358

原创 STC8增强型单片机进阶开发--RTC时钟

RTC时钟是一种实时时钟芯片,通常与微控制器或计算机等设备配合使用,提供高精度的时间和日期信息,以便于设备进行时间相关的操作,如记录数据、定时执行任务、闹钟提醒等。RTC时钟的应用场景非常广泛,例如计算机主板、智能家居、物联网设备、工业自动化等领域。在这些应用中,RTC时钟可以提供高精度的时间戳、定时任务、日历功能等,从而为系统提供更加可靠的时间基准。除了时间和日期信息,一些RTC时钟芯片还集成了温度传感器、电池备份等功能,以提供更加全面的服务。

2024-06-02 14:45:22 1364

原创 STC8增强型单片机进阶开发--电位器案例(ADC)

在现代电子系统中,模拟信号转换为数字信号的过程至关重要,而模数转换器(ADC)则扮演了关键角色。本次学习将深入理解ADC的基本原理和应用场景,掌握STC8H芯片中ADC模块的结构和工作原理,并学会通过电路设计和编程获取ADC数据,从而实现对模拟信号的精确采集和处理。通过控制滑动变阻器,来观察电压变化。通过万用表测量P0.5位置的电压通过代码读取出P0.5位置的电压通过学习ADC的基本原理和应用,以及STC8H芯片中ADC模块的配置和工作方式,我们掌握了将模拟信号转换为数字信号的关键技能。

2024-06-02 08:25:21 1317

原创 STC8增强型单片机进阶开发--LED呼吸灯(PWM)

学习PWM(脉宽调制)是探索数字信号转模拟信号的重要一步,尤其在控制电路输出方面具有广泛的应用。本次学习将聚焦于了解PWM的基础概念、掌握在STC8H芯片上配置PWMA的方法以及应用实践。通过深入学习PWM技术,您将能够控制各种设备的亮度、速度等参数,从而在工程和电子领域中做出更多创新。通过本次学习,您已经了解了PWM的基本概念和工作原理,掌握了在STC8H上配置PWMA的步骤以及PWM的各种配置参数。此外,您还学会了如何利用PWM控制LED的亮度,并掌握了调试PWM的方法。

2024-06-02 08:17:41 1623

原创 STC8增强型单片机开发--定时器Timer

在嵌入式系统开发中,定时器是一项关键功能,它能够在特定时间间隔内执行任务或者产生中断信号。了解定时器的原理和编程操作对于掌握嵌入式系统开发至关重要。本文将介绍定时器的基本概念、配置方法以及一个简单的定时器案例,帮助你理解和掌握定时器的使用。通过本文的学习,你应该对定时器有了更深入的理解,并掌握了定时器的编程操作。我们学习了定时器的基本概念,包括工作模式、中断配置、时钟源以及时钟周期设置等内容。同时,我们也通过一个实际的案例学习了如何使用定时器来控制板载LED的高低电平输出。

2024-05-30 15:08:46 945

原创 STC8增强型单片机开发--系统时钟

了解系统时钟概念了解时钟周期概念了解指令周期(机器周期)概念主频越高,执行速度越快。主频越高,干扰越强,越容易出现问题。

2024-05-30 08:27:27 1145

原创 STC8增强型单片机开发--中断系统INT

在嵌入式系统中,中断处理是实现实时响应的关键机制。当系统中的某个事件需要立即处理,例如接收到的数据或硬件故障,中断允许中央处理单元(CPU)暂停当前任务,转而处理这个紧急事件。本文将介绍中断的基本概念、分类、优先级,以及中断的响应机制和处理方法。我们还将探讨如何配置串口(UART)的中断,并通过一个例子展示如何编写中断服务程序,以便在接收数据时点亮LED灯,在发送数据时熄灭LED灯。本文详细介绍了中断的概念和它们在嵌入式系统中的重要作用。

2024-05-30 08:22:40 1177

原创 STC8增强型单片机开发--串口调试UART

了解串口通信的基本概念掌握STC8H的串口通信原理掌握STC8H的串口通信编程学会使用逻辑分析仪调试串口串口是一种在数据通讯中广泛使用的通讯接口,通常我们叫做UART(通用异步收发传输器Universal Asynchronous Receiver/Transmitter),其具有数据传输速度稳定、可靠性高、适用范围广等优点。在嵌入式系统中,串口常用于与外部设备进行通讯,如传感器、液晶显示屏、WiFi模块、蓝牙模块等。

2024-05-29 20:57:00 1344

原创 STC8增强型单片机开发--AStyle格式化工具

在软件开发过程中,保持代码风格的一致性是至关重要的,不仅有助于提高代码的可读性和可维护性,还能够促进团队协作和代码审查的效率。然而,手动调整代码格式既费时又容易出错。幸运的是,有一些工具可以自动化这一过程,其中一款被广泛使用的工具就是AStyle(Artistic Style)。AStyle(Artistic Style)是一个开源的代码自动格式化工具,可以用于自动化代码风格的修改。

2024-05-29 20:36:37 671

原创 C51单片机开发--库函数

在嵌入式系统开发中,使用库函数是提高开发效率、简化编程的重要手段之一。通过调用库函数,开发者可以避免重复编写一些常用功能的代码,如IO操作、定时器配置等,从而节省时间、降低出错概率,使得程序更加易读易维护。本文将以点灯为例,介绍了使用库函数和直接操作寄存器两种开发方法的对比,以及使用库函数进行IO操作和延时的具体步骤,希望能够帮助读者更好地理解和应用库函数在嵌入式系统开发中的重要性和作用。库函数是一组已经封装好的程序,提供给开发者调用使用。

2024-05-29 10:45:44 1356

原创 C51单片机开发--GPIO的理解

在学习C51的GPIO模式及芯片手册阅读之前,首先需要理解基本的电路原理和嵌入式系统的工作方式。GPIO(General Purpose Input/Output)是嵌入式系统中常见的一种通用输入输出接口,通过配置不同的工作模式,可以实现多种功能。通过本次学习,我们将深入了解C51芯片的GPIO模式以及如何从芯片手册中获取信息,并将其转化为代码实现。通过学习C51的GPIO模式和芯片手册的阅读,我们掌握了如何配置GPIO引脚的工作模式,并将手册中的要求转化为可执行的代码。

2024-05-29 08:37:16 993

原创 C51单片机开发--点亮第一盏灯

本文将带您深入学习C51单片机的端口配置和基本编程,以实现LED的控制。通过使用Keil C51编译器,您将学会如何编写C语言程序,并使用STC-ISP工具将程序烧录至黑马程序员STC8核心开发板。从项目创建到代码编写,再到编译和烧录,我们将一步步指导您完成整个学习过程。通过本文的学习,您已经掌握了C51单片机端口配置和编程的基本原理与方法。您学会了如何使用Keil C51编译器创建项目、配置设备信息,并编写控制LED的C语言程序。

2024-05-29 08:31:33 1493

原创 C51版本Keil环境搭建

本文将引导您了解并掌握C51版本Keil开发环境的概念、安装配置方法以及基本使用技巧。Keil是一款在嵌入式系统开发领域广泛使用的集成开发环境(IDE),特别适用于基于8051系列单片机的软件开发。通过本文提供的步骤,您将能够轻松地搭建和配置C51版本Keil开发环境,并开始进行8051单片机的程序开发与调试。通过本文的介绍和步骤,您现在应该对C51版本Keil开发环境有了更深入的理解,并具备了搭建、配置和使用该环境的能力。

2024-05-29 08:26:19 1387

原创 上位机开发--Qt Designer

PyQt5 是一个功能强大的 Python GUI 框架,提供了丰富的组件和工具,帮助开发者快速构建各种图形界面应用程序。本教程将详细介绍 PyQt5 的安装、使用 Qt Designer 可视化工具、加载 UI 文件模板代码、常用知识点以及解决常见问题,希望能帮助您更好地使用 PyQt5 进行 GUI 开发。PyQt5提供了一个可视化图形工具,文件名为。通常代表C:\Users\你的用户名\AppData\Local\

2024-05-28 14:50:01 1326

原创 上位机开发--PyQt简介&环境搭建

在当今的软件开发领域,图形用户界面(GUI)的设计与实现是至关重要的一环。PyQt作为Python的GUI开发框架之一,为开发者提供了丰富的工具和功能,使他们能够轻松地创建跨平台的用户界面。本文将介绍PyQt的基本概念、安装方法以及解决常见问题的技巧,帮助您更好地开始使用PyQt进行GUI开发。PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。

2024-05-26 08:28:34 1537

原创 Python--面向对象

面向对象,强调的是对象(实体)面向对象是一种思想,更加符合人的思维习惯面向对象使复杂的问题简单化了面向对象的出现,让曾经在过程的执行者,变成了对象的指挥者。

2024-05-25 20:17:55 1261

原创 Python--函数基础

函数的使用包含两个步骤:1定义函数 —— 在函数中编写代码,实现功能2调用函数 —— 执行编写的代码def 函数名():函数封装的代码def是英文define的缩写;函数名的命名规则和变量的命名规则要保持一致# 定义函数def 函数名(参数1, 参数2):函数代码# 调用函数函数名(参数1, 参数2)

2024-05-25 14:51:19 856

原创 C语言基础--结构体

有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性这时候可通过结构体实现结构体(struct)可以理解为用户自定义的特殊的复合的“数据类型”定义结构体变量的方式:先声明结构体类型再定义变量名在声明类型的同时定义变量语法格式:// 先声明结构体类型再定义变量名struct 结构体名 {成员列表struct 结构体名 变量名;// 在声明类型的同时定义变量struct 结构体名 {成员列表}变量名;

2024-04-23 20:56:28 870

原创 Java多线程的常用方法和使用

首先,什么是线程安全问题呢?线程安全问题指的是,多个线程同时操作同一个共享资源的时候,可能会出现业务安全问题。下面通过一个取钱的案例给大家演示一下。案例需求如下场景:小明和小红是一对夫妻,他们有一个共享账户,余额是10万元,小红和小明同时来取钱,并且2人各自都在取钱10万元,可能出现什么问题呢?如下图所示,小明和小红假设都是一个线程,本类每个线程都应该执行完三步操作,才算是完成的取钱的操作。但是真实执行过程可能是下面这样子的。

2024-03-25 15:12:07 917

原创 JAVA WEB案例-文件上传-自动装配

前后台分离开发中,我们前后台开发人员都需要遵循接口文档,所以接下来我们介绍一款撰写接口文档的平台。YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。源码地址: https://github.com/YMFE/yapi官方文档: https://hellosean1025.github.io/yapi/yapi管理自己接口地址:API接口管理:根据需求撰写接口,包括接口的地址,参数,响应等等信息。

2024-03-11 08:51:37 394

原创 JAVA WEB案例-登录校验-日志记录

全称:JSON Web Token (https://jwt.io/),用于对应用程序上的用户进行身份标记头信息(Header):记录令牌类型和签名算法,例如:{“alg”: “HS256”,“typ”: “JWT”}有效载荷(Payload):记录一些自定义能够区分身份的非敏感信息,例如:{“id”: “1”,“username”: “tom”}签名(Signature):用于保证Token在传输过程中不被篡改,它是header、payload,加入指定算法计算得来的。

2024-03-05 15:41:16 960

原创 javaWeb三层架构之学生管理系统

为了实现代码的层次清晰,分工明确,通常会将一个应用划分成三层架构:表示层、业务逻辑层、数据访问层。分层时候,可以实现代码的复用性。

2024-01-22 15:12:41 1138

原创 微服务JWT的介绍与使用

​ RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可逆的”密码体制。​ 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK [2]。​ RSA加密:非对称加密。​ 同时生产一对秘钥:公钥和私钥。​ 公钥秘钥:用于加密​ 私钥秘钥:用于解密。

2024-01-22 14:39:37 1630 2

原创 Nacos 高级详解

nacos 提供了3种方式,配置dataId的加载顺序A: 共享配置:(过时),使用 shared-configs 替代​​B: 加载多配置:(过时),使用 extension-configs 替代​C: 内部规则拼接:​​​Data IDGroupNamespace。概念描述Data ID数据唯一标识,可理解为Spring Cloud应用的配置文件名Group用来对Data ID做集合管理,相当于小分类Namespace用于进行租户粒度的配置隔离。相当于大分类组group配置。

2024-01-15 20:13:16 1177

原创 我们一起做过的SPA——Nuxt.js介绍

SEO:搜索引擎优化(Search Engine Optimization), 通过各种技术(手段)来确保,我们的Web内容被搜索引擎最大化收录,最大化提高权重,最终带来更多流量。非常明显,SPA程序不利于SEOSEO解决方案:提前将页面和数据进行整合前端:采用SSR后端:页面静态化 (freemarker 、thymeleaf、velocity)服务端渲染(Server Side Render),即:网页是通过服务端渲染生成后输出给客户端。在SSR中,前端分成2部分:前端客户端、前端服务端。

2023-12-11 16:40:44 985

java项目学生管理系统后端

Java 项目学生管理系统是一个用 Java 编写的管理学生信息的系统。它通常用于学校、教育机构或培训中心等场景,旨在方便管理和操作学生的基本信息,包括学生的姓名、年龄、性别、成绩等数据。 学生管理系统的代码资源包括以下主要组件和功能: 实体类 (Entity Class):用于表示学生对象的类,包含学生的基本信息属性,如学号、姓名、性别、年龄、成绩等。 数据访问对象 (Data Access Object, DAO):用于与数据库进行交互的类,提供对学生信息的增删改查等操作。通过 DAO 类,可以实现将学生信息存储到数据库中,或从数据库中读取学生信息。 服务层 (Service Layer):包含学生信息的业务逻辑处理,例如学生的增删改查操作以及其他与学生信息相关的业务逻辑。服务层的功能是对外提供接口,供其他模块调用。 控制器 (Controller):用于接收用户的请求,调用服务层的相关方法进行处理,并返回结果给用户。控制器负责将用户的请求与服务层进行适配和转发。 用户界面 (User Interface):学生管理系统通常有一个用户界面,用户可以通过该界面进行学生信息

2023-12-07

空空如也

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

TA关注的人

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