自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 安规电容定义和应用

失效后,不会导致电击,不危及人身安全的电容器,称之为安规电容。

2024-04-27 17:06:13 283

原创 稳压二极管仿真实验

用Multisim搭建如下的仿真电路图,选用5.1V的稳压管,12V的直流电源,开启仿真后,12V电压将稳压管击穿,稳压管将两端的电压稳压到5.07V,该电压与限流电阻R1的阻值有关,流过稳压管的电流为1.43mA,注意该电流不要超过稳压管的最大反向电流,假设该型号稳压管的最大方向电流为5mA,则1.43mA没有超过5mA,稳压管工作正常。假如电源为4V,则稳压管不起作用,可看到探针2处的电压为2.93V,并没有稳压到5V,流过稳压二极管的电流只有2.93PA,这是漏电流,电源电流基本都流向了负载。

2024-04-20 22:30:58 447

原创 二极管分类及用途

通用开关二极管特点:电流小,工作频率高选型依据:正向电流、正向压降、功耗,反向最大电压,反向恢复时间,封装等类型:BAS316 ; IN4148WS

2024-04-14 23:02:32 1275

原创 二极管特性介绍

对于锗二极管,开启电压为0.2V,导通电压UD约为0.3V。当反向电压超过某个值时,电流开始急剧增大,称之为反向击穿,称此电压为二极管的反向击穿电压,用符号UBR表示。当PN结外加电场时,电流方向与内电场相反,则会削弱扩散运动,使得N区的电子往P区加速移动,P区的空穴往N区移动,这样就形成了电流,移动到P区的电子会从外电场再次循环回到N区,再从内电场流到P区,这样就源源不断的形成了电流(电流方向与电子方向相反)负极,又叫阴极,给二极管两极间加上正向电压时,二极管导通, 加上反向电压时,二极管截止。

2024-04-05 21:58:09 1043

原创 压敏电阻简介

压敏电阻器是一种具有瞬态电压抑制功能的元件,可以用来代替瞬态抑制二极管、齐纳二极管和电容器的组合。在雷电天气电视机的天线容易受到感应雷的影响,天线会产生高压,当高压出现时,压敏电阻的阻值很小,就相当于导线,将天线直接接地,保护电视机;这种连接方式主要用于可控硅、大功率三极管等半导体器件,一般采用与保护器件并联的方式,以限制电压低于被保护器件的耐压等级,这对半导体器件是一种有效的保护。当开关S闭合,交流220V电压过大时,压敏电阻阻值很小,相当于与电源的回路短路,保险起作用,对后面的电路不会造成影响。

2024-02-08 21:08:51 428

原创 电容主要特点和作用,不同类型的电容区别

电容的作用就是通交流隔直流,通高频阻低频。如果负载电容比较大, 驱动电路要把电容充电、放电, 才能完成信号的跳变,在上升沿比较陡峭的时候, 电流比较大, 这样驱动的电流就会吸收很大的电源电流,由于电路中的电感,电阻(特别是芯片管脚上的电感)会产生反弹,这种电流相对于正常情况来说实际上就是一种噪声,会影响前级的正常工作,这就是所谓的“耦合”。电子电容上的104用的是数字计数法,这种计数法一般是3位数字,最左边的第一位和中间的一位数字是有效数字,最右边的一位数字是表示倍数,也就是10的多少次方,

2024-01-25 22:13:06 1037

原创 电阻表示方法和电路应用

注意:有些贴片电阻上标着01A,01B这些标记的,虽然不常见,但也要知道,意思是:****01A代表电阻值应为100ⅹ1=100Ω;01B代表电阻值应为100x10=1000Ω(即1KΩ);01C代表电阻值应为100X100=10000Ω(即10KΩ)。这是贴片电阻上的字母表示方法。01代码经查表得知为100、代码字母A经查表得知为10零次方(即为1)。

2024-01-15 23:02:24 1430

原创 MQTT协议-心跳请求和心跳响应

用定时器中断调用mqtt_Ping函数进行定时发送,定时器可在客户端连接上服务器并发送了一个报文数据后打开,假设CONNECT报文设置的保持连接时间是100秒,那心跳请求可以每30秒或50秒发送一次,只要小于100秒就行,因此定时器可初始化为30秒或50秒,根据实际来定。心跳请求报文比较简单,只有固定报头,固定报头由两个字节组成,第一个字节为固定为C0,第二个字节为剩余长度,但后面没有有效载荷的内容,因此剩余长度为0,所以心跳请求报文就为C0 00。CONNECT报文的可变报头是由。

2023-03-09 16:19:15 3913 1

原创 MQTT协议-发布消息(客户端向服务器发送)

计算的剩余长度为169个,因为大于128,所以用两个字节表示,169=128*a+b,可计算出a = 1,b = 41,a转为十六进制为01,b先转为二进制0010 1001,最高位需要变为1,所以为1010 1001,转为十六进制为A9,所以剩余长度就填A9 01。再发送上面组装好的发布信息报文,阿里云并没有回复,这是对的,因为组装时设置的Qos等级是0,没有响应部分,所以阿里云也没有应答。有效载荷是JSON格式,可以参照服务器下发的内容,修改其中的值,再发送回去。组合固定报头+可变报头+有效载荷。

2023-03-09 16:12:58 2706

原创 MQTT协议-发布消息(服务器向客户端发送)

不能忘记加上固定报头和可变报头,组合成订阅主题报文发送报文,收到阿里云应答,表示订阅成功。

2023-03-09 15:51:38 4229

原创 MQTT协议-发布消息和发布确认

固定报头由两个字节组成,第一个字节的高4位固定为0011,第2位和第1位表示Qos等级,可设置为等级0,所以是00,第3位和第0位也可以设置为0,第二个字节是剩余长度,用?报文标识符只有在Qos等级是1或者2时才出现在报文中,因为本次实验设置的等级是0,所以这个报文标识符就没有。所以可变报头的数据就只有发布权限的主题名,在阿里云里可以选择物模型的Topic类,方便后续传输真实数据。可变报头由两部分组成,一个是主题名,一个是报文标识符,主题名就是阿里云里具有发布权限的Topic类。

2023-03-08 23:59:59 1507

原创 MQTT协议-取消订阅和取消订阅确认

在订阅主题时有效载荷是由主题过滤器和服务质量要求组成的,但这里取消订阅就没有了服务质量要求,只有一个主题过滤器,该主题也是具有订阅权限的Topic类,要转为十六进制才能组合报文。可变报头的字节与订阅主题报文的可变报头内容一致,也就是取消和订阅的是同一个主题,不能没有订阅就取消,根据前面文章知道订阅主题报文的可变报头为00 0A,所以这里也是00 0A。先发送CONNECT报文连接阿里云,再发送订阅主题报文,最后发送取消订阅主题报文,阿里云回复了取消订阅确认报文B0 02 00 0A,后续对该报文进行解析。

2023-03-08 23:25:46 973

原创 MQTT协议-订阅主题和订阅确认

加上固定报头和可变报头,可得计算??后面的字节数量,为35个,小于128,因此使用单字节表示剩余长度,转为十六进制为0x23,因此最终的订阅报文如下。

2023-03-08 23:03:30 3365

原创 MQTT协议-使用CONNECT报文连接阿里云

将网络调试助手改为TCP Client,远程主机地址填入i6deo513xT1.iot-as-mqtt.cn-shanghai.aliyuncs.com,端口号1883,点击HEX,将上面组合好的CONNECT报文复制粘贴到输入框,点击连接,再点击发送。根据公式180=128*a+b,计算可得a = 1,b = 52,a在高8位,b在低8位,低位在前,高位在后,所以书写顺序是b a。将80转为十六进制0x50,放到文本文档的十六进制数据前面,要符合UTF-8编码,所以还要在前面加上00。

2023-03-08 00:04:43 1413 5

原创 MQTT协议-CONNECT报文剩余长度计算

因为数据位只有7位,全部为1的情况下最大可表示的值为127,即后续字节数量小于128个的话,可以使用一个字节来表示完,大于等于128个的话,一个字节就表示不了,最高位表示该字节后是否还有字节来表示长度,为0,则后面没有再表示长度的字节,说明字节数量小于128个,为1,表示后面还有字节来一起表示长度,说明字节数量大于等于128个。高8位的1表示的数值为128,根据公式300=128*a+b,计算出a和b的值,a是高8位的,b是低8位的。2、把02的二进制写出来,AC为低8位,02为高8位。

2023-03-07 23:26:47 674

原创 MQTT协议-CONNECT报文介绍

Connect报文主要用于客户端连接服务器的,未涉及具体数据的传输,可以使用网络调试助手来连接阿里云平台,用十六进制格式发送这一串报文,来连接平台上的一个设备,使其显示在线。

2023-03-07 23:12:29 1612

原创 STM32-CAN配置与库函数解析,实现环回模式通信

1、配置过滤器CAN_FilterTypeDef结构体就是过滤器的一些参数设置2、发送数据CAN_TxHeaderTypeDef结构体是对发送报文进行组帧,aData数组存放着要发送的数据,pTxMailbox指针是返回控制器使用了哪个邮箱进行发送3、中止发送请求4、获取空邮箱的个数5、接收数据RxFifo指定用于接收报文的FIFO缓存,CAN_RxHeaderTypeDef结构体定义接收报文的格式,aData数组存放接收到的报文6、获取接收FIFO满的个数。

2023-02-21 23:36:52 3208 3

原创 STM32-CAN控制器介绍

对CAN接口部分重要知识点进行记录,更详细的需要查看参考手册STM32的CAN接口叫做bxCAN,bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B。它的设计目标是,以最小的CPU负荷来高效处理大量收到的报文。它也支持报文发送的优先级要求(优先级特性可软件配置)。对于安全紧要的应用,bxCAN提供所有支持时间触发通信模式所需的硬件功能时间触发模式。

2023-02-21 23:00:13 3342

原创 CAN总线通信

CAN 是控制器局域网络(Controller Area Network) 的缩写,是 ISO 国际标准化的串行通信协议

2023-02-21 21:35:37 2819

原创 使用阿里云IoT Studio建立物模型可视化界面

Web界面的实时曲线正确显示改变的温度值,如果发现温度值没改变,则点击曲线进行刷新,横坐标的时间也会刷新,左上角显示最后一次温度值,符合预期。在预览的Web页面点击开关时要注意,每次点击开关都会往ESP-01S下发数据,需要ESP-01S回应数据开关才会设置成功,否则会反弹。则Web页面显示数据下发成功,同时按钮也被正常打开,关闭按钮同理,要发送关闭继电器的AT指令。选择自己的产品,设备,设备里要显示的属性值,这里选择温度,最后确定。在交互中添加事件,当鼠标点击实时曲线时,刷新曲线组件,显示最新数据。

2023-02-12 17:46:26 2714 5

原创 ESP-01S通过AT指令上报数据到阿里云物模型

注意:ESP8266-1是设备号,要改为自己的设备,id可以随便写,params后面是标识符和对应值,改变值即可上传不同数据。设置完成则生成以下物模型,最后记得点击发布上线,这里生成的只是草稿,要发布后才能在设备中使用。回到阿里云可以看到物模型数据已经上传成功,要打开实时刷新,数据便会自动更新,否则要刷新网页。选择添加标准功能,这些是云平台已经生成好的物模型,可以直接使用。在设备已经显示在线的前提下,发送下面AT指令,上报物模型数据。点击设置后,ESP-01S会收到数据,物模型数据被改变。

2023-02-12 16:52:28 2863 3

原创 ESP-01S使用AT指令连接阿里云

出厂的ESP-01S是基本的AT指令固件,没有MQTT的,所以无法通过MQTT指令与云平台通信,需要烧录固件(如果测试到有MQTT相关的指令,则不用重新烧录固件)因为ESP-01S的Flash只有8Mbit,也就是1MByte,所以要我选择了下面这个固件,适用于1MB flash的模组。固件烧录成功后测试AT指令,查看固件版本,正常则可以连接阿里云。点击开始后将ESP-01S重新上电,开始烧录固件。先取出设备的三元组,生成阿里云连接参数。发送AT指令,发布MQTT消息。发送AT指令,订阅Topic。

2023-02-12 16:37:20 3090 6

原创 阿里云平台与MQTTX软件通信

将域名、ClientId、Username、Password复制到MQTTX软件新建连接时对应的位置,也能成功连接阿里云设备。打开配置软件,粘贴三元组信息,TimeStamp和ClientId随便写,最后点击右下角的生成,则会生成阿里云连接参数。将MQTT连接参数复制到MQTTX的新建连接对应位置,其他的默认即可,最后点击右上角的连接。打开阿里云平台,需要提前创建好设备,打开设备信息页面,点击MQTT连接参数。MQTTX软件粘贴Topic,输入要发送的数据,最后点击右下角发送按钮。

2023-02-12 14:31:23 2670 1

原创 创建阿里云物联网平台

局域网通信因为手机和电脑都是通过运营商连接互联网,运营商分配的都是动态IP地址,不能长期稳定的创建连接,所以要借用云端服务器来获得稳定的连接获取云端服务器的方法目前市面上很多厂商都有自己的物联网平台,可以提供给个人进行简单的开发,本次实验使用阿里云平台连接云平台需要的网络通信协议嵌入式设备与阿里云通信的协议大多为MQTT协议通信示意。

2023-02-12 14:15:05 2821 2

原创 TFT-LCD屏幕触摸校准

解释:屏幕显示是2.8寸,分辨率是240x320的,作显示时操作的是分辨率的坐标值,但屏幕同时有触摸功能,触摸功能也是2.8寸(同一块屏幕),作触摸时读取的值不是分辨率的坐标值,而是ADC值,这个ADC值在屏幕宽度上是0 ~ 4096,在高度上也是0 ~ 4096的,所以ADC值与屏幕分辨率存在线性关系。3、在上一步通过触摸5个点,获取到了它们的ADC值,但因为触摸是有误差的,如果直接用这些ADC值,则最后算出来的比例因素和偏移量都是不太准确的,所以要将4个触摸点整合成对角的两个点,减少触摸误差。

2022-12-24 16:13:21 3782 5

原创 TFT-LCD LVGL与硬件交互

点击事件是通过回调函数的形式来实现的,btn_event_cb函数给出了点击按钮后要执行的操作,示例代码里实现效果是每点击一次按钮,则标签数字加一。显示了"TFT-LCD"标签,再显示两个按钮,点击Buzzer蜂鸣器按钮,则控制蜂鸣器开启和停止,点击Relay继电器按钮,则控制继电器吸合和断开。lv_ex_get_started_1函数就是创建了一个带"Button"标签的按钮,函数里设置了按钮的显示位置,按钮大小,按钮点击事件;在GUI.h头文件中用结构体封装按钮和标签函数,点击事件函数不用。

2022-12-10 15:00:09 1293 2

原创 TFT-LCD LVGL官方例程的应用

这次显示了两个按钮,第一个按钮是灰色的,第二个按钮是红色的,按钮可以触摸,还有一个进度条,拉动进度条下面显示的数字会跟着改变,可以看出lvgl的界面功能还是挺不错的。点击跳转到该条件处,发现在lv_ex_conf.h头文件中进行了宏定义,默认是0的,所以lv_demo_widgets函数不起作用,需要将0改为1,函数才被编译。再在初始化函数中调用lv_ex_get_started_2()和lv_ex_get_started_3(),再编译烧录。编译发现没错后,烧录到开发板上查看显示效果。

2022-11-27 14:08:50 1985

原创 TFT-LCD移植LVGL详细过程记录

在定时器中断回调函数中调用lvgl的心跳函数 lv_tick_inc(),定时器每隔一定时间就调用该函数,控制 lvgl 刷新界面,lv_tick_inc函数需要传入参数,参数就是定时器定时时间,比如定时5ms,那就传入5,定时1ms,那就传入1。接下来修改disp_flush函数,下面是该函数没有被修改过的,可以看出该函数的功能就是设置一个窗口,然后往窗口里写入像素点的值,写入的操作默认被注释掉了,写完一个像素点后,像素点指针加1,继续写下一个像素点。

2022-11-21 21:29:09 2534 2

原创 LX12864P1屏幕使用介绍(ST7567驱动),显示横线、字符、图形

通信方式有并行的6800和8080,以及串行的4线方式,本次实验使用了4线串行通信,CSB为片选引脚,数据传输前拉低CSB,A0引脚说明传输的是数据还是指令,如果A0为0,说明是指令,如果为1,说明是数据,SCL为时钟线,SDA为数据/指令线,SCL为低电平时放数据或指令,SCL为高电平是ST7567读取SDA上的电平信号。初始化命令中,设置对比度由两条指令组成,一定要先发送指令0x81,告诉ST7567接下来的一条指令是设置对比度的,再发送对比度的值,例如0x1B,由6位来控制;

2022-11-19 21:44:23 7877 1

原创 TFT-LCD屏幕读取Flash芯片图片资源并显示

在前面用TFT-LCD显示图片的实验中,由于图片资源过大,240 * 320 的图片大小为150K,而STM32F103ZET6的内部Flash才512K,最多能放三张图片,所以这次将图片放到外部Flash中,外部Flash芯片为W25Q64,有64Mbit,即8Mbyte,因为1M = 1024KB,所以8M = 8192K,8192K / 150K = 54,所以大概能放54张240 * 320的图片。主函数中先将图片写入到外部Flash中,并在屏幕上显示写入过程,等待写入完成。

2022-11-19 21:21:22 2474 8

原创 TFT-LCD显示直线、矩形、圆形

usR、usG、usB变量为16位,但首先读取出的RED数据占5位,且在高字节,GREEN数据占6位,同样在高字节,BLUE数据占5位,在高字节,所以组合时要通过移位,将RED数据放在usColor的高5位,GREEN数据占中间的6位,剩下的5位放BLUE数据,这样就组合成了RGB565的数据格式。如果是填充矩形,则调用填充颜色函数按照矩形的宽和高填充颜色就行,如果是不填充矩形,则画四条直线。之前显示ASCII字符、中文和图片都是使用的取模软件,这次直接用代码驱动显示直线、矩形和圆形。

2022-11-13 15:43:45 4094

原创 TFT-LCD屏幕显示图片

输出数据类型选择C语言数据,扫描模式为水平,输出灰度默认是单色的,因为屏幕是16位的,所以要改为16位真彩色,最大宽度和高度与图片一致,取消包含图像头数据,勾选高位在前,这与后面编写代码有关,然后点击下方的16位彩色,在颜色位数上选择RGB565的数据格式;系统运行函数中直接调用TFT_LCD显示图片函数,x,y轴的坐标都是从0开始,传入屏幕的宽240,高320,图片序号为1,烧录代码后便能显示图片,代码量比较大,烧录慢要等待。如果是横屏显示,则屏幕宽x高为320x240,所以图片也要找320x240的。

2022-11-13 15:41:31 9713 4

原创 TFT-LCD显示中英文

方法:定义一个结构体类型,里面有两个数组,第一个数组是中文字符的索引,后续代码中就通过这个索引查找中文字符的位置,第二个数组就是对应中文字符的字模数据,这个数组的大小要根据中文字符的字模数据的个数来定,比如16x16大小的字符的字模数据有32个(一个一个数),所以该数组大小就为32,如果是24x24的大小,则该数组大小要为72。编写显示一个中文字符的函数,原理与显示一个ASCII码字符一样,都是找到对应的字符,然后遍历该字符的字模数据,为1则显示字体颜色,为0则显示背景颜色。

2022-11-05 14:43:09 4797 3

原创 TFT-LCD屏幕显示ASCII字符和字符串

3.在写入24号字体时,因为字体宽度为12个像素点,而字模数组的数据都是8位的,所以12个像素点就只能先写8位,再写4位,写完一行的8位数据,ucPage+1,在字符的一维数组中找下一个8位的数据,但只循环4次,取低4位的数据,所以共写入了12位像素点数据,写完一行后屏幕会根据窗口宽度自动换行,所以下一行就再取数组中的两个字节写入,每次两个,直到48个字节都写完,就显示出了字符。写完8位是紧接着写4位的,并没有空格,图片为了区分8位和4位,加了空格。

2022-11-05 14:27:19 5001

原创 TFT-LCD屏幕填充颜色(FSMC)

手上的TFT-LCD屏幕为2.8寸屏, 驱动IC为ILI9341TFT-LCD屏幕显示内容前要设置一个显示窗口,窗口的参数有X坐标,Y坐标,宽度,高度,设置一个正方形或者长方形窗口,就可在窗口内显示内容,如果要显示一个点,则X、Y坐标也要设置,只不过宽度和高度都为1打开CubeMX软件,点击Connectivity下的FSMC在模式中可以看到有多种选择,前四个对应了NOR Flash的四个区,因为硬件的LCD_CS引脚接到了FSMC_NE1,所以用第1个区LCD的片选引脚CS接到了NE1,所以选择NE1内存

2022-10-26 20:54:13 3528

原创 TFT-LCD与FSMC控制器

TFT-LCD英文全程为: Thim Film Transistor Liquid Crustal Display,即薄膜场效应管液晶显示器。这种液晶显示器,每一像素点由集成在其后的薄膜晶体管来驱动,从而可以做到高速度、高亮度、高对比的显示效果。此外,由于每个像素点相对独立,并可以连续控制,不仅提高了显示屏的反应速度,同时可以精确的控制显示色阶层,所以TFT-LCD的色彩非常真实,TFT-LCD 也被叫做真彩液晶显示器。

2022-10-16 20:13:59 3078

原创 万用表电阻档测量电阻并读数

读数:200欧档位的值直接从屏幕读取,位是欧,2K,20K,200K这三个档位的读数也是从屏幕读取,单位是K欧,之所以设置三个K欧级的档位,主要是这三人档位的测量精度不一样,M欧级的同理。电阻的档位表示的是万用表的最大量程,例如,200欧档最大可以量200欧以内的阻值,2K欧最大可以量2K欧的阻值,后面同理。只有三个单位,欧,千欧,兆欧,当显示数值稳定下来时,调到哪个单位,则显示的数值加单位就是电阻的阻值,要注意看小数点的位置。2000欧(0.002M欧 = 2K欧= 2000欧)

2022-10-16 20:02:05 9176

原创 STM32串口通信-简单版

USART_SendByte函数体内容可以直接拷贝标准库函数USART_SendData的内容,然后在最后加上等待TXE标志位的while循环即可,因为发送字符串函数需要调用到这个USART_SendByte函数,所以避免在发送字符串时前一个字符还没有转移到移位寄存器,就被后一个字符给覆盖了,造成数据丢失的情况。正因为原子的串口中断函数写有点复杂,不太好懂,但懂了之后发现其写法挺不错的,不过有时候只需要实现简单的功能,不想写这么复杂,所以这里编写一个简单的中断处理函数,将串口接收到的数据再发送回去。

2022-10-15 15:47:43 998

原创 STM32-RTC实时时钟

RTC模块和时钟配置系统(RCC_BDCR寄存器)是在后备区域,即在系统复位或从待机模式唤醒后RTC的设置和时间维持不变。RTC时钟源有三种来源,分别是HSE的128分频,LSE时钟源,LSI时钟源,一般RTC选择的是LSE时钟源,也就是外部低速时钟源,外接一个32.768KHz的晶振,因为这个时钟源比较准确。第一个是RTC预分频模块,它可以编程产生最长1秒的RTC时间基TR_CLK,如果设置了秒中断允许位,可以产生秒中断。2、设置寄存器 PWR_CR 的DBP位,使能对RTC和后备寄存器的访问。

2022-10-02 16:31:38 2187

原创 STM32-ADC基本原理

Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

2022-10-02 16:07:44 1930

CC2530 串口UART0收发字符串温度传感器.rar

有.c源文件和IAR工程文件

2022-01-31

linux-2.6.35.7-gec-v3.0.3.tar.bz2

linux-2.6.35.7-gec-v3.0.3.tar.bz2

2022-01-31

空空如也

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

TA关注的人

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