Ubuntu下的LGT8F328P MiniEVB Arduino开发和烧录环境

基于 LGT8F328P LQFP32 的 Arduino MiniEVB, 这个板型资料较少, 记录一下开发环境和烧录过程以及当中遇到的问题.

关于 LGT8F328P

芯片参数

  • 8位RISC内核
  • 32K字节 Flash, 2K字节 SRAM
  • 最大支持32MHz工作频率
    • 集成32MHz RC振荡器
    • 集成32KHz RC振荡器
  • SWD片上调试器
  • 工作电压: 1.8V ~ 5.5V
  • 封装: QFP48, QFP32, QFN32, SSOP20

其它参数参考 AT328P

在 EEVBlog 上有一个相关的讨论 LGT8F328P - clone of ATMega328 with lots of extras!, 里面有 LGT8F328P 和 AT328P 的比较.

LGT8F328P 和 AT328P 的指令周期数对比

因为 LGT8F328P 本身在工作频率上就更高(32MHz vs 20MHz), 加上指令周期数更少, 在性能上优势明显. 但是因为速度太快, 也导致了一些 AT328P 上正常工作的应用在 LGT8F328P 运行会出问题.

LogicGreen公司

生产这个芯片的公司叫 LogicGreen, www.lgtic.com, 主营是LGT8开头的一系列MCU, 面向中低端市场, 非常低调(这公司甚至连中文名都没有), 没有见过任何广告, 出名完全是因为 LGT8F328P 兼容 ATmega328P, 可以平替火热的 Arduino 系列开发板.

LGT8F328P 的产品页为 http://www.lgtic.com/lgt8fx8p/, 在上面有数据和用户手册.

关于开发板

基于 LGT8F328P 的开发板在某宝上有不少, 直接搜型号就能看到. 这里要介绍的是下面这种板型, 不是很常见

正面

背面

  • 丝印上的DIR应该是写错了, 实际上是 DTR
  • 板子上LDO是 5V 的 AMS1117, VCC和5V都是5V, 而 VIN 这个脚对应的是 AMS1117 的输入脚, 输入需要大于 6V. 接线时要注意区分.
  • 板子上不带 USB2TTL, 开发时需要自备 CH340, CP2102 这类 USB2TTL 的USB转换头

接线

开发板的接线在图上已经标出, 对应的

LGT8F328P      -> CH340, CP2102 
VCC            -> 3.3V
GND            -> GND
TX             -> RX
RX             -> TX
DTR            -> DTR

Arduino 环境和 LGT8F328P 支持包 lgt8fx

安装 Arduino IDE 2.x 和 lgt8fx 的过程请点击这里查看 http://www.cnblogs.com/milton/p/17063445.html

这个 Mini EVB 对应的设备选择是

  • Board: LGT8F328P
  • Port: 根据自己本地的串口选择
  • Clock: 32MHz
  • Clock Source: Internal
  • Variant: 328P-LQFP32 (e.g. MiniEVB, nano-style or WAVGAD)

之后就可以直接编译烧录 Blink 示例

遇到的问题 无法自动烧录

一开始, 使用的是 Arduino 标准的5V供电, 但是 Upload 后一直提示 stk500_recv(): programmer is not responding 错误, 此时需要手动按一下RESET按钮, 才能成功烧录. 将 CH340 换成 CP2102, 问题依旧, 检查 DTR 的输出电压, 在烧录阶段确实拉低了, 只有0.2V, 在非烧录阶段为 3.3V, 也没有问题.

对比了下标准的 Arduino Nano 和 CH340 的电路 Arduino Nano ATmega238P/CH340G V3.0 PCB Layout, DTR脚和RST脚之间也是104的电容.

似乎都没有问题, 最后在 Nerd Ralph 的这篇文章里找到了答案 LGT8F328P EDMINI board. 他也遇到了同样的问题, DTR Reset doesn't work

After some more debugging, I found I could upload if I pressed the reset button just before uploading. This meant the bootloader was working, but auto-reset (toggling the DTR line) was not. These boards use the same auto-reset circuit as an Arduino Pro Mini

A negative pulse on DTR will cause a voltage drop on RST, which is supposed to reset the target. When the target power is 5V and 3V3 TTL signals are used, toggling DTR will cause RST to drop from 5V to about 1.7V (5 - 3.3). With the ATmega328P and most other AVR MCUs, 2V is low enough to reset the chip. The LGT8F328P, however requires a lower voltage to reset. In some situations this can be a good thing, as it means the LGT MCU is less likely to reset due to electromagnetic interference.

所以DTR未能拉低重启的原因是, LGT8F328P 需要的最低工作电压接近 1.7V, 而供电电压在5V时, DTR 在传输那一下拉低, 也只能达到这个电压附近, 所以 LGT8F328P 并未受影响而重启, 而对于 AT328P, 降到2V就会重启. 所以这个电路设计对 LGT8F328P 失效了.

解决的办法也很简单, 就是把供电换成 3.3V, 之后每次烧录都会稳稳地重启了.

用于烧录 LGT8F328P 的 LGTISP

当 LGT8F328P 丢失 Bootloader 时, 需要通过 SWC/SWD 接口重新写入 Bootloader, 这时候就需要使用 LGTISP.

相对于官方的 ISP 硬件, brother_yan 提供了一种使用 LGT8F328P 制作 ISP 工具的方案

  • 硬件: http://oshwhub.com/brother_yan/LGTISP
  • 软件: http://github.com/brother-yan/LGTISP
本文转载于网络 如有侵权请联系删除

相关文章

  • EasyNVR中如何对kernel内核的异常关闭状态做监测?

    大家知道我们有一套核心的流媒体服务,即EasyDSS_kernel,目前基于EasyDSS-Kernel的多款商业软件(EasyDSS流媒体服务器、EasyNVR智能云终端、EasyGBS国标流媒体服务、EasyNVS视频综合管理平台)已经在旅游业、教育业、物流仓储、平安工地、能源环保、广电行业、工业与物联网、智能农业、视频智能分析等几乎所有的行业都已服务并稳定运营多年。在部分情况下,用户在使用EasyNVR时,其中的kernel内核如果异常关闭,则会导致所有EasyNVR视频拉流传输失败,在其他平台软件中也同样存在此问题。因此针对这个问题,我们开发了一套定时任务检测机制,用来判断kernel内核是否正常运行,本文就介绍一下我们对此功能的实现方式。定时任务检测实现://定时任务检测kernel服务是否正常运行 s:=gocron.NewScheduler(time.Local) s.Every(5).Seconds().Do(checkMs) s.StartAsync()复制在定时任务中定时检测所有直播接口是否正常响应,如果接口请求失败在根据kernel的进程ID,判断进程是否正常运行

  • git 操作二进制文件

    平常用git进行项目管理已经稀松平常了,今天咱来点不一样的.平常管理的都是普通的文本文件,如果是二进制文件,git能够处理么?比如word文档.测试一下.新建一个项目,在其中创建test1.docx,test2.txt两个空文件并提交.之后编辑文件并添加标题,gitdiff看一下效果:image-20210603222409788效果很明显,文本文档能够清楚的看到变动,而二进制文件不行.这对于需要对这种二进制文件进行版本管理的需求来说,有些不尽人意.如此,这版本管理有和没有也没什么两样,你也不知道在那次修改了哪些内容.那么有没有办法能够让git对word文档进行识别呢?有的,这需要借助第三方工具来帮助git对文件进行解析.配置文件解析工具1.安装解析工具docx2txt地址:https://sourceforge.net/projects/docx2txt安装过程很简单,其中的INSTALL文件有教,mac用户直接执行make即可,make后默认安装在了/usr/local/bin路径下.下载来试一下这个工具吧:docx2txt.pltest1.docximage-2021060322

  • ​LeetCode刷题实战194:转置文件

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选!今天和大家聊的问题叫做转置文件,我们先来看题面:https://leetcode-cn.com/problems/transpose-file/Givenatextfilefile.txt,transposeitscontent. Youmayassumethateachrowhasthesamenumberofcolumnsandeachfieldisseparatedbythe''character.题意给定一个文件file.txt,转置它的内容。你可以假设每行列数相同,并且每个字段由''分隔.示例示例: 假设file.txt文件内容如下: nameage alice21 ryan30 应当输出: namealiceryan age2130复制解题思路:先用awk获取列数,再循环 k=`awk'{printNF}'file.t

  • 非常有用的 Python 技巧

    来源:苏生不惑链接: https://mp.weixin.qq.com/s/ATvPzfLHwp0wEH5-tMW2cg函数连续调用defadd(x): classAddNum(int): def__call__(self,x): returnAddNum(self.numerator+x) returnAddNum(x) printadd(2)(3)(5) #10 printadd(2)(3)(4)(5)(6)(7) #27 #javascript版 varadd=function(x){ varaddNum=function(x){ returnadd(addNum+x); }; addNum.toString=function(){ returnx; } returnaddNum; } add(2)(3)(5)//10 add(2)(3)(4)(5)(6)(7)//27复制默认值陷阱>>>defevil(v=[]): ...v.append(1) ...printv ... >>>evil() [1] >>>evil

  • Cordova 运行 Web 应用

    Cordova运行Web应用Cordova简介Cordova非常的流行,因为它可以让Web开发人员来创建移动应用,而且还可以通过JavaScript来调用设备硬件API(GPS、蓝牙等)。通常Cordova的做法是把应用的Web内容(HTML,JavaScript,CSS)打包到移动应用中,这样看起来更像是一个本地应用,即使在离线的情况下也可以使用。其实还可以使用Cordova为现有的Web应用提供设备API,增强现有Web应用的功能。这样做不仅可以使用服务端技术(aspx,cshtml,php等),还可以随时更新Web应用,只有在需要新的设备功能(Cordova插件)时才更新客户端。这样的应用架构看起来是这样子的:个人认为,这才是真混合开发!新建一个Cordova应用按照Cordova的文档说明,创建一个测试应用,并添加Android平台,指令如下:cordovacreatemyApporg.apache.cordova.myAppmyApp cordovaplatformaddandroid复制然后先编译一次,确认可以生成Android应用:cordovabuildandroid复

  • B2R2:一套针对二进制代码分析的实用算法、函数以及工具集

    B2R2B2R2是一套针对二进制代码分析的实用算法、函数以及工具集,B2R2采用纯F#(.NET)开发,B2R2原名为B2-R2,其命名引用的是R2-D2,因为.NET不允许在标识符或命名空间中使用字符“-”,因此我们将该项目名米给B2R2。其中,B代表Binary,B2即二进制代码,R指的是逆向分析Reverse。工具特性1、B2R2是一款采用F#开发的“分析友好型”工具,它可以为研究人员开发彻骨分析工具提供语法上的便利,例如模式匹配和代数数据类型等等。 2、B2R2运行速度非常快,它带有一个快速高效的前端引擎,可用于对二进制代码进行分析,该引擎纯粹以实现功能性为目的进行开发,因此它自然支持二进制代码反编译,提升和并行优化。 3、B2R2简单易用,并且没有绝对的依赖组件,因为它本身就是一个完全托管的库,我们只需要安装.NET核心SDK即可。 4、B2R2与操作系统无关,它只需要.NET核心的支持,即可在Linux、macOS和Windows等操作系统平台上运行。 5、B2R2可与其他组件协同工作,以为它没有与任何其他语言绑定,我们可以在任何支持命令行的其他语言环境下使用B2R2。依赖

  • Verizon CEO:移动边缘计算继续使用毫米波频谱,5G将需要光纤扩展

    背景:Verizon公司是由美国两家原地区贝尔运营公司——大西洋贝尔和Nynex合并建立BellAtlantic后,独立电话公司GTE合并而成的,公司正式合并后,Verizon一举成为美国最大的本地电话公司、最大的无线通信公司,全世界最大的印刷黄页和在线黄页信息的提供商。Verizon在美国、欧洲、亚洲、太平洋等全球45个国家经营电信及无线业务,公司在纽约证券交易所上市。 Verizon5G概述: Verizon的5G网络策略集中于三个可交付成果,其中用于回程的光纤在其中发挥着巨大的作用:1.面向企业和消费者的5G移动设备,2.5G家庭宽带(请参阅下面的注释1。)—通过空中传送家庭互联网,3.移动边缘计算本质上是分布在整个网络中的微型数据中心,因此它们更接近5G端点。该公司首席执行官HansVestberg表示,今年Verizon将在30个城市推出5G移动。他还计划在今年晚些时候重新启动Verizon的固定无线5G家庭服务[1]。5G家庭服务目前在美国有四个市场。注1.目前还没有针对5G固定无线的标准,甚至没有任何标准正在研究中。它不是ITU内部的IMT2020用例。光纤和移动边缘计算

  • 简单线性回归分析

    这是学习笔记的第1999篇文章最近看了下线性回归的内容,还是很有感触的。也通过统计学的这样一个思维来回视原来片面的理解方式。我们不是无限放大统计学的重要性,而是需要通过统计学的学习明白,统计学其实不是科学,而是一种科学技术。 我们可以通过一个小的例子来做下分析,这个例子参考了如下的链接:https://blog.csdn.net/tmb8z9vdm66wh68vx1/article/details/79544739整个案例是使用R语言实现的,通过测试也发现了彼此之间的一些问题和欠缺,而对于我们分析来说,确实是一种很便捷的工具。我们假设身高和体重是具有相关关系,那么我们可以逐步的完善下面的信息数。初始化数据:>age=18:29>height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)通过这两个结果集,我们可以得到相关的散点图。>plot(age,height,main="身高与年龄散点图")可以看到这些散点之间还是具有一定的线性关系,而且数据也存在一些误差的情况。建立回归

  • [ Git篇 ] git push / Please read the documentation and contact an administrator

    更新代码的时候出现:具体操作步骤:gitremoteupdategitrebaseoriginname出现如下:Countingobjects:8,done. Deltacompressionusingupto4threads. Compressingobjects:100%(8/8),done. Writingobjects:100%(8/8),8.02KiB|0bytes/s,done. Total8(delta6),reused0(delta0) remote:Resolvingdeltas:100%(6/6) remote:Branchrefs/heads/sense: remote:Youarenotallowedtoperformthisoperation. remote:Topushintothisreferenceyouneed'Push'rights. remote:User:xxx remote:Pleasereadthedocumentationandcontactanadministrator remote:ifyoufeeltheconfi

  • 是时候跟你的空指针说再见了

    作者:李良逸 原文:http://blog.imuxuan.com/archives/86复制判空灾难作为搬砖党的一族们,我们对判空一定再熟悉不过了,不要跟我说你很少进行判空,除非你喜欢NullPointerException。 不过NullPointerException对于很多猿们来说,也是Exception家族中最亲近的一员了。 为了避免NullPointerException来找我们,我们经常会进行如下操作。 if(data!=null){ dosth. }复制如果一个类中多次使用某个对象,那你可能要一顿操作,so: “世界第九大奇迹”就这样诞生了。Maybe你会想,项目中肯定不止你一个人会这样一顿操作,然后按下Command+Shift+F,真相就在眼前: What,我们有接近一万行的代码都是在判空? 好了,接下来,要进入正题了。 NullObject模式对于项目中无数次的判空,对代码质量整洁度产生了十分之恶劣的影响,对于这种现象,我们称之为“判空灾难”。那么,这种现象如何治理呢,你可能听说过NullObject模式,不过这不是我们今天的武器,但是还是需要介绍一下NullOb

  • redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson一、Jedis的使用1<dependency> 2<groupId>redis.clients</groupId> 3<artifactId>jedis</artifactId> 4<version>2.6.0</version> 5<type>jar</type> 6<scope>compile</scope> 7</dependency>复制pom.xml中添加上面的依赖项就行了,下面是示例代码:1@Test 2publicvoidtestJedis()throwsInterruptedException{ 3 4Jedisjedis=newJedis("10.6.144.xxx",7030); 5 6//String测试 7System.out.println(jedis.get("foo"));//

  • R语言 ROC曲线

    ROC曲线(受试者工作特征,ReceiverOperatingCharacteristic)可以简单、直观得观察分析方法的临床准确性,并可用肉眼作出判断。ROC以真阳性率(灵敏度FPR)为纵坐标,假阳性率(1-特异度TPR)为横坐标绘制的曲线,可准确反映某分析方法特异性和敏感性的关系,是试验准确性的综合代表。ROC曲线不固定分类界值,允许中间状态存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一更佳截断点作为诊断参考值。提供不同试验之间在共同标尺下的直观的比较,ROC曲线越凸越近左上角表明其诊断价值越大,利于不同指标间的比较。曲线下面积可评价诊断准确性。相关定义及计算公式(用混淆矩阵的形式将分类结果展示出来) setwd("E:\\Rwork") library(ROCR) data(ROCR.simple) pred<-prediction(ROCR.simple$predictions,ROCR.simple$labels) #ROCR.simple$predictions为预测标签,ROCR.simple$labels为真实标签 perf&l

  • 创建数组

    [[0]*n]*m与[[0for_inrange(n)]for_inrange(m)]的区别 [0]*n是浅拷贝,[[0]n]m这种方式是直接将[0]*n复制了m遍 [0for_inrange(n)]才是创建,深拷贝 https://blog.csdn.net/weixin_41888257/article/details/108449289 作者:kittyUncle 出处:https://www.cnblogs.com/ygao/ 本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

  • URL重写中的中文参数问题

    在做搜索功能时,需要输入关键字,如果搜索出来的结果很多,又需要分页。这里用URL重写技术(即href="?keyword=关键字&page=分页数"),就涉及到了传递中文关键字的问题。 我也是在网上找了很多,才找到了一个合适的办法。 在前台JSP页面中,这里就需要给超链接编码,其实也可以说只是给中文参数编码,不过我是对整个超链接编码。编码要进行两次,使用Javascript自带的encodeURI()方法。所以就是用javascript来操作,代码如下: 1<script> 2$(function(){//这里用的JQuery语法 3$("a.class1").each(function(i){//对所有类名是class1的<a>标签依次进行下面的操作 4varurl=$(this).attr("href");//获取这个<a>标签的href值,就是url啦 5url=encodeURI(url);//进行第一次编码 6url=encodeURI(url);//进行第二次编码 7$(this).attr("href",url);//将编码后

  • 设备发现协议

      网络环境下设备发现是一种比较常见的应用,比如查找打印机与WiFi。那么我们应该如何通过编程实现对网络中的特定设备进行查找呢?   常用的方式有:IP广播与多播,以及基于这两种方式所实现的第三方协议,较著名的有Onvif协议。 1局域网广播 1.1定义   广播是一种一对所有的通信模式。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。   广播不用进行网络路径选择,不能穿越路由器。这是为了防止广播数据影响大面积的主机,引起广播灾难。 1.2优缺点 1.2.1优点 网络设备简单,维护简单,布网成本低廉。 由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。 1.2.2缺点 无法针对每个客户的要求和时间及时提供个性化服务。 网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。 不能在广域网上传播,这是为了防止广播风暴。 1.3广播地

  • 187.gulp介绍和安装

    安装gulp 使用gulp自动化开发流程,配置好gulp后,可以自动给我们处理好一些工作,比如写完css后,要压缩成.min.css,写完js后,要进行相关的图片压缩等,这些工作都可以让gulp帮我们完成。 1.创建本地包管理环境 使用npminit可以在本地生成一个package.json文件,package.json文件用来记录当前这个项目依赖了哪些包,以后别人拿到项目之后,不需要将node_modules文件进行拿到(因为node_modules文件都是相关的安装包,比较大),只需要进入项目目录中执行命令:npminstall就可以了,就会自动的安装package.json下devDependencies中指定的安装包。 2.安装gulp gulp的安装非常简单,只要使用npm命令安装即可,但是因为gulp需要作为命令行的方式运行,因此,需要安装在系统级别的目录中。 执行命令:npminstallgulp-g 因为在本地也同样需要使用required的方式,因此也需要在本地安装一份: 执行命令:npminstallgulp--save-dev --save-dev是将安装的包添加

  • HTTP Code和一些Web服务器介绍

    状态码 号 类别 原因短语 1XX Informational,信息 接收的请求正在处理。服务器收到请求,请继续执行请求 2XX Success,成功 请求被成功接收并处理。 3XX Redirection,重定向状态码 需要进行附加操作以完成请求 4XX ClientError,客户端错误 服务器无法完成请求,或请求包含语法错误 5XX ServerError,服务端错误 服务器在处理请求时出错 在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变。 1XX 100:Continue继续,请求者应当继续提出请求,服务器已收到请求的一部分,正在等待其余部分。 101:切换协议,请求者已要求服务器切换协议,服务器已确认并准备切换。 2XX no 状态码 信息 200 OK成功 请求已经被服务器成功处理了 201 已创建 请求成功并且服务器创建了新的资源 202 已接受 服务器已接收请求,但尚未处理 203 非授权信息 服务器已成功处理了请求,但返回的信息可能来自另一源 204 NoContent,无内容

  • python 3.9调 用 xlrd 1.2.0 报错 AttributeError: &#39;ElementTree&#39; object has no attribute &#39;getiterator&#39;

    FLowUs邀请链接:https://flowus.cn/login?code=AXNU63 FlowUs邀请码:AXNU63 参照:https://blog.csdn.net/suhao0911/article/details/110950742 在新版python3.9中,windows中使用的更新删除了getiterator方法,所以我们老版本的xlrd库调用getiterator方法时会报错。AttributeError:'ElementTree'objecthasnoattribute'getiterator' 解决方法: 找出目录python\Lib\site-packages\xlrd下的xlsx.py文件 修改两个地方的的getiterator()改成iter(),下面的两个地方,这里已经把getiterator()改成iter()了 然后重新载入程序即可

  • jQuery的DOM操作实例(3)——创建节点&amp;&amp;编写一个弹窗

    一、原生JavaScript编写弹窗 二、jQuery编写弹窗  知识点归纳总结: 在原生JavaScript中,创建一个节点: varoDiv=document.createElement("div"); 将创建的节点添加到指定的父级中。比如:document.body.appendChild(oDiv); 如果需要在创建的节点中添加内容,可以用innerHTML,要注意jQuery中没有innerHTML这个属性。 在jQuery中,创建一个节点: 可以一步到位,使用jQuery的工厂函数$(),并可以直接添加内容,如varoDiv=$("<div>dssdsdsaasd</div>");       注意:添加内容的时候,要注意引号的转义。/"/'   2.将创建的元素节点添加到指定的父级中,$("body").append(oDiv);   删除一个节点,原生JavaScript中,只能在父级中删除这个节点,不能直接删除,这点和jQuery不一样。 JavaScript删除节点:document.

  • IP协议、ARP协议等之温故知新

    今天才知道: 1、IP协议的固定部分长度为20字节。(貌似有一家运维工程师面试我的时候,问过我这个问题呢。) 2、IP数据包首部中的协议?? 答:协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程。如下图所示,协议字段指出应将数据部分交给哪一个进程处理。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。 首部校验和:...... http://www.cnblogs.com/kzloser/articles/2582349.html#undefined ARP协议(地址解析协议) 说明:ARP每一个主机都设有一个ARP高速缓存(ARPcache),里面有所在的局域网上的各主机和路由器的IP地址到硬件地址的映射表。 作用:通过IP地址得知其硬件地址。 步骤:   注意: 网络上其他主机并不响应ARP询问,只有接收端主机接收到这个帧时,才向发送端主机做出这样的回应 ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题.若所要找的主机和源主机不在同一个局域网上,那么就要通过AR

  • 端口未正常关闭解决方法

    linux lsof-i查看端口状态 kill-9PID关闭端口   windows netstat-ano|findstr"{$port}"  taskkill-F-PID{$PID}; tasklist|findstr"{$PID}"查看端口使用程序

相关推荐

推荐阅读