自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(230)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 ARM汇编伪指令AREA

可以看到,按照ARM的规则,AREA指令后面紧跟段名,有些段名是保留的(编译器内置的),这些保留的段名有特殊意义,例如上图中出现的特殊段名有:STACK、HEAP、RESET,|.text|。对于STACK段,编译器会把该区域的汇编代码或描述编译到栈区,也即内存的最高字节处。对于RESET段,编译器会把该区域的汇编代码或描述编译到flash的0地址处。用于定义一个代码段或数据段。以STM32的启动文件为例,里面有很多AREA指令。

2024-04-22 14:45:02 138

原创 keil把c语言函数转成汇编

有上图可见,这个标签对应的flash地址处,通过DCD命令占用了一个32bit的空间,这个空间中的值被初始化成了全局变量var的地址。然后执行编译,这样就会在工程的输出文件夹(一般会被命名为OBJ)下,找到与.c文件同名的.s文件,这个C文件中的所有函数,都会被一一转换为汇编函数。汇编可以让开发人员从根源上理解程序的运行逻辑,本文介绍如何在keil环境下如何把一个c文件中的某一个函数,转换为汇编函数,并编译运行。由这段代码可以看到在汇编中是如何调用C函数的,以及汇编是如何读写c语言中的全局变量var的。

2024-04-22 11:25:39 422

原创 稳压二极管选型

如下图所示,为一般稳压二极管的用法,它工作在反向击穿区。这样VCC电压超出D1稳压值Vz的部分,就会被加在电阻上,这样可以限制流过R1 D1的电流,以避免D1被大电流烧坏。当D1工作在反向击穿区时,不断减小R1的阻值时,那么流过R1和D1的电流就会增大,由于D1两端的电压为近似恒值,那么D1的功率就会随着电流而增大,一旦这个D1的功率超过POWER DISSIPATION,二极管就会被烧坏。IR为反向漏电流,也即在反向电压较小,未能击穿二极管时,二极管处于断路状态,但不是完全断路,而是会有小电流漏过。

2024-03-21 11:29:03 312

原创 altium designer AD绘制圆形铺铜

选中这个圆,然后工具->转换->从选中区域创建铺铜,快捷键TVG,效果如下,可以看到铺铜已经成功,只是铺铜的参数还没设置好而已。选中铺铜,然后设置铺铜参数,主要是设置网络名、铺铜类型为solid全铺。以在top层的角上创建圆形铺铜为例,先放置一个圆形走线,快捷键PAU。

2024-03-11 09:59:40 1219

原创 altium designer AD设置布线/铺铜与板框的间距

依次打开:设计->层叠管理器。修改下图中的pullback distance的值。多边形铺铜区与外板框的间距为:Poly和Outline Edge交叉处的值。走线与外板框的间距为:track和Outline Edge交叉处的值。依次打开:设计->规则->板框间距规则,如上图所示。其余各种间距可自行设置。

2024-03-10 15:12:35 1676

原创 运放的虚短和虚断

也即当A远大于1时,Af≈1/F,这种情况被称为“深度负反馈”。OPA365这款芯片的供电电压一般为5v,那么当差分输入电压为0.000005V时,运放的输出就会达到饱和,也即0.000005V*100万倍=5V。上图中,A为运放的开环放大增益,F为反馈电路的增益,那么红框部分(也即这个反馈系统)的闭环增益Af=A /(1+AF)。上图中,线性区的这条斜线的斜率,就是开环增益(或者叫开环放大倍数),对于理想运放,其开环增益为正无穷,当然对于市面上的运放产品,斜率是不可能无穷大的,一般为几万~几百万。

2024-02-24 11:34:09 394

原创 html js加载本地文件报错处理,跨域问题

解决方法是搭建一个本地服务器,然后从这个服务器访问这个html文件,这样html和其他资源文件,会被浏览器判定为同一个域。首先下载node.js的windows安装包,安装完以后,打开命令行,查询两个版本号,如果没有报错,就说明node.js和npm都安装好了。这个问题是怎么来的?然后打开我们的html文件就可以了,这时html中的js要访问这个文件夹及其子文件夹下的文件,就不会报错了。还有个问题就是,当修改了html文件以后,浏览器中的文件并不会更新,需要打开html并刷新页面才行。

2024-01-03 11:30:11 913

原创 QT for Android安卓编译环境搭建+首次编译3个大坑

编译环境能否搭建成功,主要是看各个依赖软件的版本是否匹配。依赖的软件有3个:JDK、安卓SDK、安卓NDK。我的qt版本是5.14.1,我亲测以下版本可以成功让编译安卓:QT5.14 + JDK1.8.0 + 安卓SDK26.1 + 安卓NDK20.1在QT->工具->选项,打开如下窗口后,点击设备选项卡,如下所示,填入以上3个软件的安卓位置,如果版本匹配,下图会看到两个绿色的对号。然后点击上图的Kits选项卡,如下图所示。可以看到安卓编译器已经没有黄色感叹号了,就说明配置成功了。

2023-12-17 16:50:46 826

原创 Qt for Android设置安卓程序默认横屏+全屏

我的qt版本是5.14.1,网上查到的方法是,把编译出的build文件夹中的AndroidManifest.xml文件复制出来然后修改,然后把修改后的xml文件加入pro文件,语法为ANDROID_PACKAGE_SOURCE_DIR = $$PWD/AndroidManifest.xml(具体;上图可见,自动生成的文件中,有一个就是AndroidManifest.xml。可视化编辑模式下,可编辑的东西很少,就是上图所显示的这些东西,有趣的是可以直接设置3个图标:高分辨率图标、中分辨率图标、低分辨率图标。

2023-12-17 15:45:26 536

原创 MOS基础知识

因此,MOS管可以被制构成P沟道增强型、P沟道耗尽型、N沟道增强型、N沟道耗尽型4种类型产品。P沟道增强型MOS管因在N型衬底中生成P型反型层而得名,其通过光刻、扩散的方法或其他手段,在N型衬底(基片)上制作出两个掺杂的P区,分别引出电极(源极S和漏极D),同时在漏极与源极之间的SiO2绝缘层上制作金属栅极G。在正常工作时,P沟道增强型MOS管的衬底必须与源极相连,而漏极对源极的电压VDS应为负值,以保证两个P区与衬底之间的PN结均为反偏,同时为了在衬底顶表面附近形成导电沟道,栅极对源极的电压也应为负。

2023-10-20 13:57:51 363

原创 STM32移植FAT文件系统

所谓“移植”,就是打通FAT源码和物理设备之间的软件接口。FAT源码早就被公益组织给写好了,直接下载源码。但是FAT作为顶层应用程序,它需要面对的底层物理设备是不确定的,那么底层的物理设备驱动程序就需要程序员来自己写。物理设备可以时硬盘、内存卡、nor、nand、EEPROM、甚至可以是RAM,只要是可以存储内容的设备,皆可上文件系统。需要我们自己写的函数接口,都在diskio.c里面。总工有6个函数。

2023-09-07 11:47:15 269

原创 STM32使用FAT文件系统-代码简读

fat文件系统的所有外部接口都在ff.h中。

2023-09-06 18:42:08 500

原创 单片机TVS/ESD二极管防护

TVS一般用于低压大电流防护,例如为了保护单片机的5V输入,可以使用一个截止电压为5.5V的TVS来保护,一旦用户不小心给单片机插上了一个12V电源,那么单片机板子上的TVS将会把12V电源的正极通过雪崩直接短路到,从而保护单片机不受损害。上图中共有9个二极管,真正起ESD作用的只有中间那个,它的符号和其余8个不同,其余8个就是普通二极管。1、2、3、4引脚上一旦出现10KV高压,ESD二极管就会短路,这样就可以把1234上的高压泄放到3、8引脚上,也即GND上。都是利用了二极管正向导通、反向截止的特性。

2023-08-27 21:59:26 1913

原创 STM32定时器级联功能

本文只讲其中一个功能,定时器1给定时器2当分频器。这种功能可以把两个32位定时器,合并为为一个64位定时器,可以把2个16位定时器合并为一个32位定时器、甚至可以把4个16位定时器合并为一个64位定时器。根据上图,我们发现,TIM1可以输出一个脉冲(时钟)信号TRGO,这个信号被连接到STM32 内部的一根信号线上,这根信号线叫ITR0(STM32内部共有4根这样的信号线,你也可以理解为4个没有被引出的引脚插针)。在芯片内部,某些定时器的输出信号TRGO可以连接到另一个定时器的内部输入信号上。

2023-08-09 17:16:21 1642

原创 QT控件通过qss设置子控件的对齐方式、大小自适应等

一些复杂控件,是有子控件的,每个子控件,都可以通过qss的双冒号选择器来选中,进行独特的样式定义。很多控件都有子控件,太多了,后面单独写一篇文章来介绍各个控件的子控件。例如下拉列表控件,右边有个下拉按钮(QComboBox::drop-down)就是子控件,这个下拉按钮里面还有一个箭头(QComboBox::down-arrow),也是子控件。展开的下拉列表,每个条目(QAbstractItemView::item)也都是子控件。又比如spinbox,有个上下箭头可以调整数值大小,这个上下箭头也是子控件。

2023-07-26 13:41:50 1764

原创 QT样式表qss中的长度单位px/pt/%/em/ex/mm/in等

长度由一个数字和单位组成如 8px,2em,10in,7pt,20pc等等。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。),相对于设备的长度单位,像素是相对于显示器屏幕分辨率而言的。相对于元素的字体大小(font-size),如果当前行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。字体大小(font-size)很多人用px做单位,其实用px做字体单位唯一的致命缺点就是在IE下无法用浏览器字体缩放的功能。相对于视口*较小尺寸的 1% ,vw和vh中较小的那个;

2023-07-26 09:00:08 2271

原创 解决QT中QWidget无法触发mouseMoveEvent鼠标移动事件

需要注意的是,这个Qt::WA_Hover的CPU成本更高,本质上鼠标移动事件,就是被Qt::WA_Hover这个标志分发下去的,除此之外,Qt::WA_Hover还会分发更多事件,如鼠标进入、移出、移动等。那是因为你的widget上有别的子控件,子控件覆盖的地方,鼠标移动事件会被分发到子控件,子控件会把事件拦截,然后父控件就无法收到鼠标移动事件了,这时父控件的mouseMoveEvent函数就不会被触发了。mouseMoveEvent这个事件函数,只要鼠标在这个widget内移动,就会触发该事件。

2023-07-24 11:41:08 4144 4

原创 QT各种控件常用样式表qss示例

如上图所示,表头的文字区域,变成了颜色更深的深绿色,这是因为这个区域的颜色,实际上是3层颜色的叠加:QTableView整体的绿色+QHeadView表头整体的黑色半透明+section表头文字区域黑色半透明。这个控件比较复杂,里面包含了滑动条、表头(又细分为内容区/空白区)、表格、整体、左上角按钮等多种不同的元素,他们之间有复杂的叠层关系。下面设置表头背景色,黑色,半透明,透明度为50。发现这个绿色背景并没有作用于整体,表头部分仍然为白色,那是因为表头在顶层,遮住了QTableView的绿色背景。

2023-07-11 13:20:27 2270

原创 nor flash、nand flash、eeprom、fram的读写特性

因为EEPROM的写入速度很慢,所以他里面带有一个高速缓存,这个缓存的大小就是page的大小,借助这个缓存,我们就可以通过20M的SPI把数据快速发给EEPROM,然后单片机就可以切换线程,或者切换状态机,让CPU去干别的事情,而不是把CPU都浪费在数据发送和等待上。如果你指定起始地址为0,要写入257字节,也即出现了跨页操作,那么EEPROM把第0页写满之后,写指针不会跳到第257字节处(也即不会跳到第1页的第0字节处),而是会发生回环,跳回本页的第0字节处,会导致之前写入的数据被覆盖。

2023-07-06 18:39:22 2957

原创 QT获取字符串的长度高度(像素矩形)+根据矩形定义文字字号

使用QPainter绘制文字时,如果希望给文字后方绘制一个矩形背景色,那必须得先知道这个矩形大小。str.toUtf8().size()获取字符数(可以兼容中文,1个汉字=2个字符)已知一个矩形QRect的参数,如何设置文字字号,才能让这个矩形恰好把文字显示全?QSting str= "这是string";

2023-06-28 12:50:14 997

原创 QT中把QWidget提升为自定义控件后样式表无效的原因

当我们在设计师界面拖出一个QWidget,然后提升为自定义控件(或窗口)时,发现样式表不起作用。按照QT帮助手册的描述,当我们继承QWidget写了自己的类以后,必须要覆盖重写painterEvent函数。这里继承QWidget。可以在QT Creator把窗口创建完以后,手动把父类由QWidget改成CustomWidget。当你想继承QWidget时,不如直接继承上图的CustomWidget或者QFrame。换句话说,永远不要直接继承QWidget。但是这里有一个隐藏的小坑,容易让人遗忘。

2023-06-23 16:52:27 1465 1

原创 qt样式表qss选择器+自定义属性样式

在开始之前,先要区分3个概念:子类、子控件、后代控件是具备继承关系的类:如MyWidget: public QWidget是聚合在一起的大控件中的一小部分,如下拉列表控件中有个下拉箭头,这个箭头就是子控件(sub-control)是在界面上有父子关系的控件,如在QWidget中放置了一个QPushButton按钮,这个按钮就是QWidget的后代控件(Descendant control)

2023-06-12 18:00:46 1900

原创 QT控件自定义属性并支持QSS样式表+读取样式表的属性值

C++中自定义的属性borderColor,在qss中对应的名字为:qproperty-borderColor。冒号后面的值对应为该属性的值,他会被传递进C++代码中。边框颜色 border-color、边框半径 border-radius、背景颜色 background-color、字体大小font-size: 等等。样式表里有很多属性,例如。

2023-06-12 15:53:11 2171

原创 SBUS协议解析图解

刚开始感觉SBUS协议的通道值的拼凑规则非常奇葩,后来才理解到,它是完全按照串口硬件发送比特的顺序,来拼凑通道值的。先发送的11个bit就是通道0的值,接下来的11bit就是通道1的值,再接下来的11bit就是通道2的值。SBUS协议总共可以携带16个通道的数据,每个通道的数据为11比特,那么16个通道共有16*11=176个比特。基础知识,串口字节协议是低位(LSB)先发,例如某个字节值为0x8F(也即1000 1111),那么接收端按照先后顺序,依次收到的比特为:1 1 1 1 0 0 0 1。

2023-05-12 17:04:27 2033

原创 matlab/simulink对比前后两次仿真的曲线

做simulink仿真时,我们希望研究某个参数对于系统响应的影响,就需要不断的调整某个模块的参数,为了对比调参前后,系统的响应曲线,我们需要把前后两次的仿真结果,用toWorkspace模块送入工作空间,然后再plot绘图对比。之前我一直是这么干的。今天突然发现,新版simulink里面有了一个新功能,不知道是哪个版本开始的。把鼠标放在响应曲线的通路上,选中下图所示的Enable/Disable Data Logging按钮。打开后如下图所示,[当前]就是本次仿真生成的曲线,【存档】处就是上次、上上次、。

2023-02-11 14:35:52 3007 1

原创 matlab/simulink仿真步长设置

matlab function模块的采样时间间隔,也即matlab function多长时间会被执行一次。右击选择:block parameter。,然后填上sample time为2.5ms。对于在单片上运行的程序,用simulink做固定步长仿真很有意义。求解器的仿真步长和仿真图里的模块的采样时间间隔不是一回事。设置求解器为固定步长。如下图设置仿真步长为固定2.5ms。类似的模块还有:常数模块等。

2023-02-07 18:20:26 12659

原创 FAT32文件和目录的组织方式

文件在硬盘、SD卡等存储,而里面存储的都是二进制数据,驱动程序是如何从这堆二进制数据中,解析出目录层次、文件列表、文件内容的呢?这就必须要了知道FAT32文件系统在存储介质中的组织方式了。所谓组织方式,就是一种约定或规定,大家都按这套规则来读写就好了。

2022-10-10 16:26:21 2564

原创 altium designer基本快捷键-显示单层、高亮网络等

ctrl+w或者p+w进入布线状态,布线中按*号键+单击可放置过孔。1、保持高亮:按住CTRL,单击某网络中的任意位置。2、临时高亮:按住shift,鼠标悬停在某个网络上。选中层->shift+S,再按可恢复显示所有层。也即从bottom层观察板子 V+B。............

2022-08-10 17:18:18 10868 1

原创 Altium Designer PCB设置电源线粗细宽度+绘制时改变粗细

Altium Designer PCB设置电源线粗细宽度+绘制时改变粗细

2022-08-04 10:36:31 15635 1

原创 altium designer PCB模块化布局+交叉选择+交叉探针

由原理图生成PCB时,PCB中的元件都是随机摆放的,而模块化布局,可以让我们快速的按照原理图中元件的布局,对PCB中的元件进行布局。对于小板子,手动一个个摆放也没啥问题,但是对于中大型的板子,手动一个个布局就太麻烦了,这就体现出模块化布局的优势了。在模块化布局之前,需要基础知识:1、左右分屏,2、交叉选择与探针左右分屏步骤:菜单栏->窗口->垂直排列,如下图效果是,原理图和PCB各占半个工作区,如下图:交叉选择:菜单栏->工具->交叉选择当用鼠标在原理

2021-12-13 13:41:49 6952 1

原创 altium designer PCB各层介绍+添加多层+设置正/负片+设置层的网络标号

top layer 顶层,用来走线bottom layer 底层,用来走线mechanical 机械层,用来定义PCB形状和尺寸keepout layer 禁止布线层,用来绘制禁布区top overlay 顶层丝印层,绘制丝印bottom overlay 底层丝印层,绘制丝印top paste 顶层助焊层,用来开钢网时,让焊锡落到板子上,助焊用bottom paste 底层助焊层top solder 顶层阻焊层,用于描述绿油的覆盖区域b...

2021-12-13 11:22:39 30255 2

原创 altium designer PCB元件矩形摆放+总尺寸预估+设置原点+设置尺寸

PCB上摆上元器件以后,可能不知道要把PCB总尺寸做成多大,这时我们可以使用AD的矩形摆放功能,预估一下。所谓矩形摆放,就是让AD自动把所有元件密排成一个矩形,步骤为:1、选中所有元件2、点击菜单栏->工具->器件布局->矩形排列3、在PCB中按住鼠标画个矩形,一松手,效果如下:可以看到元件都密排在了一个矩形里面。这样我们就能大体预估一下PCB的尺寸了。设置原点菜单栏->编辑->原点-->设置,快捷键EOS然后用鼠标在...

2021-12-11 16:23:19 8431

原创 altium designer执行DRC检查+消除绿色错误

由原理图生成PCB以后,各种显示绿色(也即PCB报错),如下图:绿色的原因是DRC(Design Rule Check)检查未通过。解决方法是正确设置规则。但是在此之前,为了观感,我们先掩耳盗铃一下:临时清除绿色,步骤是:菜单栏->工具->复位错误标志。然后:打开菜单栏->工具->设计规则检查,见下图,点击“执行DRC”,可以运行一次检查。其中:“在线”指的是画PCB时实时检查,“批量”指的是,点击运行DRC按钮后才检查一次。可见,在线DRC是对电脑CPU的.

2021-12-11 14:39:09 15328

原创 altium designer把原理图转成PCB

原理图画好以后,且封装都做好映射以后,可以执行原理图->PCB的转换了。两种方法,随便你选哪一种:方法1、在原理图界面,点击菜单栏->设计->把本原理图更新至对应的PCB。方法2:在PCB文件界面,点击菜单栏->设计->从原理图更新本PCB,如下图所示。 -然后可以执行“生效更改”,看看有没有错误,没有错误的话,继续点击“生效更改”,才能真正把变化更新到PCB:如果勾选了“仅显示错误”,那么就只会显示更改中有错误的条目,正确...

2021-12-11 13:53:25 24696 4

原创 Altium designer原理图检查(编译检查)

原理图检查的主要内容有:1、元件位号冲突。也即多个元件编号相同,例如两个电容在原理图中都被命名为C2,显然肯定是无法生成PCB的。2、网络悬浮。也即网络标号没有附着在电气走线上,一般这种是人操作失误,又容易被忽视。如果注意不到会造成生成的PCB中某些线连接不上。3、电源悬浮。也即图中有些VCC和GND跟谁都不连接。。4、单端网络。例如MCU上有一个引脚引出的电气线标注了网络标号I2C1_SCL,但在图中仅此一个标号,一般这种是人疏忽忘记连接对应的元件了,建议检查。(除非设计人员故意就是想要一

2021-12-11 09:56:14 25304

原创 altium designer原理图中元件自动编号+设置value值

原理图中的元件必须要指定唯一的编号,例如上图的4个电容:C2 C3 C4 C5。如果元件很多的话,手动一个个编号麻烦,可以使用AD的自动编号:下图中可以设置自动编号的顺序方向AD的新版本中操作步骤略有不同,但大同小异:...

2021-12-10 18:05:19 20212

原创 STM32CubeMx配置定时器

定时器的用法很多:1、作为时基。也即仅读取定频自增的TIMx->CNT2、定时中断3、计数4、捕获5、输出PWM(也叫:比较输出)6、等等以编程中最常见的定时中断为例首先配置时钟树:定时器的时钟来自于内部的PLL分频->AHB->APB1或2而且由上图可见,APBx时钟进入定时器之前频率会被x2定时器溢出时间的计算:T=((period+1)*(psc+1))/(TIM_CLK_Mhz/ TIM_ClockDivision) u.

2021-12-01 18:37:18 11735

原创 CAN总线通信原理

CAN总线的仲裁是基于“线与原理(有一个0则为0,全部为1才为1)”,也即,总线上连接多个设备,只要有一个设备输出低电平,那么总线上的电平就为低(这一现象在CAN领域称为“显性”);只有全部设备均输出高电平,总线才能呈现为高电平(称为“隐性”)。可见,只要有一个设备电平显性,那么他就可以覆盖其他所有设备的电平隐性。CAN控制器在发送报文的同时会监听总线状态与自己发送的电平是否一致,如果不一致发生在ID段则会发生仲裁,如果发生在其他区域则会触发相应错误。基于这一原理,如果自己在发送报文时,别的设备也在发送报文

2021-11-15 13:41:06 11507

原创 matlab设置plot绘图刻度的小数位数

以X轴为例set(gca, 'xtick', ts);set(gca,'xTickLabel',num2str(get(gca,'xTick')','%.3f'));%设置为3位小数代码解释:gca为当前plot的坐标框的句柄,set(gca, 'xtick', ts)意思是:设置变量ts为x坐标的内容。set(gca,'xTickLabel', myTick)为把myTick的内容显示在刻度上。那么myTick这个字符串向量从何而来?当然是读取x轴的刻度值get(gca,'xTic

2021-10-21 17:53:35 8834 2

原创 keil/STM32/ARM之分散加载文件scatter file

官方资料:依次打开 -> keil -> help -> uVision help,打开帮助文件,然后定位到分散加载文件章节:分散加载文件有什么用?我们知道,在嵌入式程序中,main函数并不是首先被执行的代码,还有一个隐藏的函数,名字叫__main,他会在main之前被执行,还有一些汇编代码也会在main之前被执行。他们主要干了这些事情:1、设置栈顶地址;2、设置PC指针;3、把0初始化变量所在内存区清0;4、给非0初始化的变量赋值;3、设置栈顶地址。loa.

2021-09-02 11:29:52 3527 2

Free SolidWorks OBJ Exporter v2.zip

solidworks自定义宏,可以把solidworks模型转换为obj和mtl格式,教程:https://blog.csdn.net/qq_31073871/article/details/108407272

2021-10-09

3drradioconfig.zip

使用方法:https://blog.csdn.net/qq_31073871/article/details/103700835#comments_15477606

2021-03-18

QT多复选框.zip

QT5.8编译通过,相关介绍请搜索我的博客《QT使用QListWidget+QChececkBox实现多选功能》,链接https://blog.csdn.net/qq_31073871/article/details/90272780

2019-05-18

AU3自动发送163邮件

实现了AU3自动后台静默发送163邮件!可以用来干坏事!

2015-09-05

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

TA关注的人

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