news 2026/9/14 11:22:19

BQ76930+STM32F103动力电池BMS闭环设计实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BQ76930+STM32F103动力电池BMS闭环设计实战

1. 这不是“又一个BMS Demo”,而是一套能直接上车验证的闭环系统

BMS、BQ76930、STM32F103、上位机——这四个词凑在一起,绝不是实验室里摆拍用的Demo板。我亲手搭过三轮完整样机,从电池包实测老化到整车工况模拟跑满72小时,这套方案真正解决的是:如何让一颗高精度模拟前端芯片(BQ76930)和一颗资源受限但极其可靠的MCU(STM32F103)协同工作,在不依赖外部EEPROM或Flash扩展的前提下,稳定完成12串锂电的实时监控、均衡控制、故障诊断与通信上报。它不是教科书里的理论框图,而是我在去年帮一家电动叉车厂做电池包认证时,被逼出来的落地解法——客户明确要求:不能用STM32F4系列(成本超预算),不能加外部存储(PCB面积受限),上位机必须支持现场工程师快速读取SOC/SOH历史曲线、手动触发被动均衡、导出单体电压日志用于售后分析。于是我们锁定了BQ76930+STM32F103这个组合,并用C#在VS2019里写了一套轻量级上位机,界面不花哨,但每个按钮背后都有真实工况验证。它不追求“全功能”,而是把“电压采集精度±2mV”、“均衡启动响应时间<80ms”、“串口通信误码率<1e-6(在电机启停强干扰下)”这些硬指标全部打穿。如果你正在为中小批量动力电池包做BMS原型开发,或者需要一套可快速复用、文档齐全、问题有迹可循的参考设计,那这套方案就是为你准备的——它没有隐藏的坑,所有踩过的雷、调过的参数、改过的驱动,都摊开写在下面。

2. 方案选型逻辑:为什么是BQ76930 + STM32F103?而不是BQ76940、STM32F0或ESP32?

2.1 BQ76930:在精度、功耗与接口复杂度之间找到唯一平衡点

很多人看到BQ76940就本能地想升级,觉得“40比30多10,肯定更强”。但实际项目里,BQ76930才是那个“刚刚好”的选手。它的核心能力非常聚焦:支持1~15串电池监测,内置16位Σ-Δ ADC,典型电压测量精度±1.5mV(25℃),温度通道支持NTC/PT100/热敏电阻三模配置,最关键的是——它原生支持I²C和SPI双接口,且SPI模式下最高可达1MHz时钟速率。我们实测过,在STM32F103的SPI1(APB2总线,最高72MHz)上跑800kHz,读取12串电压+2路温度+1路电流(通过外置INA226)仅需3.2ms,完全满足100ms级循环采集要求。而BQ76940虽然增加CAN接口和更多GPIO,但其SPI协议更复杂,需要额外处理状态寄存器轮询和中断确认链路,对F103这种无硬件DMA SPI的MCU来说,反而增加了主循环负担。更现实的是成本:BQ76930国产替代料(如圣邦微SGM4066)批量价约¥8.5,BQ76940则普遍在¥18以上,差价够买两片F103C8T6了。至于功耗,BQ76930在休眠模式下静态电流仅3μA,配合F103的Stop模式(2.5μA),整机待机电流可压到6μA以内,这对铅酸替代型锂电包(如AGV备用电源)至关重要——客户明确要求“断开主回路后,BMS自身不能吃掉电池电量”。

2.2 STM32F103:不是“将就”,而是“精准匹配”

选F103不是因为便宜,而是因为它恰好卡在BMS控制需求的黄金分割点上。我们对比过F030、F303和F407:F030资源太紧(仅16KB Flash,连基本的CRC校验表都放不下);F303虽然带浮点单元,但其ADC采样精度在高温下波动大(实测85℃时INL达±3LSB),不适合做SOC估算基础;F407则属于“杀鸡用牛刀”,其丰富的外设(如FSMC、USB OTG)在BMS里几乎闲置,却带来PCB布线难度陡增和EMC整改成本。F103C8T6的72MHz主频、64KB Flash、20KB RAM,刚好够用:

  • 用HAL库实现SPI+DMA读取BQ76930(占用12KB代码空间);
  • 实现改进型库仑积分+开路电压查表法SOC估算(算法代码+查表数据共占18KB);
  • 集成简易SOH评估模型(基于内阻趋势+容量衰减斜率,非机器学习,纯查表+线性拟合);
  • 留出足够空间部署Modbus RTU从机协议栈(支持03/06/16功能码,帧校验用硬件CRC);
  • 最关键的是——它有两个独立的USART,且USART1挂载在APB2(最高72MHz),USART3挂载在APB1(最高36MHz)。这个硬件差异直接决定了通信可靠性:我们将USART1专用于BQ76930的I²C转接(通过CH341A桥接芯片),避免SPI总线冲突;USART3则作为Modbus主通道,波特率固定设为115200,启用硬件流控(RTS/CTS),实测在变频器启停瞬间的共模干扰下,误码率仍低于1e-7。网上常有人问“STM32F103串口1和串口3使用差异”,答案就在这里:不是能不能用,而是该不该用——USART1适合高速低延迟设备(如传感器桥接),USART3适合长距离、抗干扰要求高的主通信链路

2.3 上位机为何坚持C# + VS2019?拒绝Python/Qt/LabVIEW

现场工程师最怕什么?不是功能少,而是“打不开”。我们调研过27家电池厂售后部门,92%的维修电脑预装的是Win10 LTSC(长期服务版),默认不带Python环境,Qt动态库版本混乱,LabVIEW更是需要单独授权。而.NET Framework 4.7.2在Win10上是原生组件,C#编译的exe双击即用。VS2019的选择也经过验证:它生成的exe兼容性远超VS2015(后者在Win10 21H2上偶发窗体渲染异常),且对SerialPort类的底层优化更好——我们测试过同一份源码,VS2019编译版在连续发送10万帧Modbus指令时,缓冲区溢出概率为0,VS2015则达0.3%。至于“vs2019开发的c#上位机源码程序能用vs2015打开吗”这个问题,我的答案很直接:能打开,但不建议——VS2015无法识别VS2019引入的Span 语法糖,强行降级会丢失性能关键的内存池管理代码。这套上位机没用WPF,而是用WinForms+ZedGraph绘图库,原因很简单:ZedGraph.dll仅380KB,而WPF运行时依赖上百MB,现场U盘拷贝太慢。最终成品exe体积控制在1.2MB,解压即用,连安装程序都省了。

3. 硬件设计关键细节:原理图里不会写的5个致命陷阱

3.1 BQ76930的VREF引脚必须独立滤波,且不能共用MCU的VDDA

BQ76930的ADC基准电压(VREF)引脚看似只是接个电容,实则是整个采集链路的精度锚点。我们第一版PCB把VREF电容(10μF X7R)和STM32F103的VDDA滤波电容(100nF+4.7μF)并联在同一个LDO输出端,结果实测单体电压跳变达±8mV。根源在于:VDDA为MCU模拟电路供电,当ADC转换或DAC输出时会产生瞬态电流尖峰,导致LDO输出纹波耦合进VREF。解决方案是为VREF单独配置一个LDO(如TPS7A20)或至少用磁珠隔离。我们最终采用磁珠(BLM18AG601SN1D)+两级RC滤波(10Ω+10μF → 100Ω+100nF),实测VREF纹波降至12μVpp,电压精度回归±1.8mV(含温漂)。这个细节在TI官方参考设计里被弱化处理,但量产中必须补上。

3.2 STM32F103的PA11/PA12(USB引脚)存在已知硅片Bug,必须规避

这是F103系列最隐蔽的坑之一:PA11(USB_DM)和PA12(USB_DP)在部分批次芯片中,当配置为普通GPIO时会出现高阻态不稳定,导致外部上拉电阻失效。我们在调试均衡驱动电路时发现,某块板子的均衡MOSFET(IRF7474)偶尔无法关断,最终定位到PA11被误用作均衡使能信号——该引脚在复位后默认处于浮空状态,且内部上拉无效。TI勘误表(Errata Sheet DS10162)明确指出:“PA11/PA12在非USB模式下,输入电平可能被钳位至0.8V”。解决方案只有两个:要么彻底弃用这两个引脚(我们选择PA8做均衡使能),要么在硬件上强制下拉(10kΩ到GND),并在初始化代码中立即配置为推挽输出低电平。网上搜索“stm32f103 pa11 bug”能找到大量踩坑记录,但很少有人说明根本原因是硅片设计缺陷,而非软件配置错误。

3.3 电流检测必须用双向霍尔+双运放调理,不能只靠INA226

BQ76930自带电流检测通道,但仅支持单向测量(0~3.3V输入)。而动力电池包必须支持充放电双向电流监测(如-200A~+200A)。我们曾尝试用INA226直接输出±200mV信号给BQ76930,结果发现低温下(-20℃)零点漂移超±15mV,对应电流误差±75A。最终方案是:用ACS758LCB-100U霍尔传感器(带内部补偿)输出±100mV原始信号,经双运放(TLV2462)构建精密仪表放大器,增益设为33倍,输出0~3.3V送入BQ76930的VCURR通道。关键点在于运放供电:必须用独立LDO(如MIC5205)提供±5V,且正负电源滤波电容要靠近运放放置(100nF X7R + 10μF钽电容)。实测该方案在-40℃~85℃范围内,零点漂移<±0.5mV,对应电流误差<±2.5A,满足ISO 16750-2汽车电子环境要求。

3.4 PCB布局:BQ76930的AVSS必须单点接地,且与数字地严格隔离

BQ76930的模拟地(AVSS)和数字地(DVSS)在芯片内部是分离的,但很多原理图直接将二者短接在芯片焊盘处。这会导致数字开关噪声(尤其是SPI通信时的边沿)通过地平面耦合进模拟通道。我们的做法是:在PCB上将AVSS区域划为独立铜箔岛,仅通过一颗0Ω电阻(Rgnd)在电源入口处单点连接数字地;所有模拟器件(VREF滤波电容、电流调理运放、NTC分压电阻)的地线必须先汇入AVSS岛,再经Rgnd流向主地。同时,AVSS岛下方PCB层禁止走任何数字信号线,且铺铜时用开槽隔离。这一改动使电压采集信噪比提升12dB,12串电压读数标准差从±3.2mV降至±0.8mV。

3.5 均衡电路必须加限流电阻,且阻值需按发热重新计算

BQ76930的均衡开关(内部MOSFET)导通电阻典型值为180mΩ,但最大值可达300mΩ。若直接接18650电池(内阻约30mΩ),理论均衡电流可达2.5A。然而我们实测发现,持续均衡10分钟后,MOSFET结温超110℃,触发热关断。根本原因是:BQ76930未集成电流检测,无法动态限流。解决方案是在每路均衡通道串联一颗功率电阻(我们选1Ω/2W金属膜电阻),将峰值电流限制在1.2A以内。计算依据:电池单体电压3.7V,均衡压差按0.1V计,电流I=0.1V/(0.3Ω+1Ω)=77mA,但实际因MOSFET导通压降,需按最大压差(0.3V)计算:I=0.3V/(0.3Ω+1Ω)=231mA。1Ω电阻功耗P=I²R=0.053W,远低于2W额定值,温升<15℃。这个电阻看似简单,却是防止均衡失控烧毁的关键保险丝。

4. 固件开发核心实现:从裸机驱动到智能保护策略

4.1 BQ76930底层驱动:SPI通信必须启用CRC校验,且帧头需动态校准

BQ76930的SPI协议虽简单,但存在两个易被忽略的细节:

  1. CRC校验不可省略:其SPI帧格式为[ADDR][DATA][CRC],其中CRC是8位多项式(x⁸+x²+x+1)校验,覆盖ADDR和DATA。我们曾因未启用CRC,在电机启动强干扰下收到错误地址帧,导致误触发均衡。HAL库的SPI_TransmitReceive函数需配合自定义CRC计算函数,不能依赖硬件CRC(F103无SPI专用CRC模块)。
  2. ADDR字段需动态校准:BQ76930的寄存器地址并非固定,而是由CONFIG寄存器中的ADDR[2:0]位决定。首次上电时,ADDR位默认为000,但若CONFIG被意外改写,地址会偏移。因此驱动初始化必须先读CONFIG,再根据ADDR位计算实际寄存器地址映射表。我们用结构体数组实现映射:
typedef struct { uint8_t addr; uint16_t value; } bq_reg_t; bq_reg_t reg_map[] = { {0x00 | (config_addr << 5), 0}, // VC1 {0x01 | (config_addr << 5), 0}, // VC2 // ... 其他寄存器 };

这样即使CONFIG被改写,驱动仍能正确寻址。

4.2 SOC估算:抛弃纯库仑积分,采用“电压-温度-电流”三维度查表法

纯库仑积分在长期使用中累积误差巨大(每月漂移>5%),而单纯OCV查表又受温度影响严重。我们的方案是:建立三维查表矩阵(SOC = f(OCV, Temp, I))。具体实现:

  • 在25℃恒温箱中,对全新电芯进行0.2C充放电,每5%SOC记录OCV值,生成基础OCV-SOC表(21点);
  • 再在-20℃、0℃、45℃下重复测试,得到温度修正系数表(3×21);
  • 最后在不同电流(0.1C/0.5C/1C)下测试极化电压,生成电流补偿表(3×21)。
    固件中用线性插值实时计算:
float soc = ocv_table[ocv_idx] + temp_coeff[temp_idx][ocv_idx] * (temp - 25.0) + curr_comp[curr_idx][ocv_idx] * current;

该方法在实车测试中,SOC误差全程控制在±2%以内(EOL前),远优于行业常见的±5%。

4.3 故障保护:分级响应机制,避免“一触即停”的粗暴保护

BMS保护不能简单设阈值。我们的策略是:

  • 一级预警(可恢复):单体电压>4.25V或<2.5V,触发被动均衡,同时上位机弹窗提示;
  • 二级保护(需人工确认):任意单体压差>50mV,或温度>60℃,切断充电MOSFET,但放电保持;
  • 三级熔断(永久锁死):总压>50V(对应13串)或温度>85℃,同时切断充放电MOSFET,并写入EEPROM故障码。
    关键创新在于“压差保护”的实现:不是比较最大最小值,而是计算所有单体电压的标准差σ。当σ>30mV时启动均衡,σ>50mV时触发二级保护。这样能提前发现早期失衡(如某颗电芯内阻缓慢升高),比固定阈值更灵敏。实测某次老化测试中,该机制在电芯容量衰减12%时即发出预警,而固定阈值法直到衰减23%才报警。

4.4 Modbus RTU协议栈:精简到极致,仅保留必需功能码

为节省Flash空间,我们未使用开源Modbus库,而是手写精简版:

  • 仅支持功能码03(读保持寄存器)、06(写单个寄存器)、16(写多个寄存器);
  • 寄存器地址映射严格遵循BMS数据结构:
    • 40001~40012:单体电压(mV)
    • 40013~40014:总压/电流(mV/A)
    • 40015:SOC(%)
    • 40016:SOH(%)
    • 40017:最高温度(℃)
    • 40018:最低温度(℃)
  • CRC16校验用查表法实现,代码仅128字节;
  • 帧解析采用状态机,避免缓冲区溢出。
    整个协议栈代码<1.5KB,且通过Modbus Poll软件100%兼容测试。

5. 上位机开发实录:从零开始的C#工程搭建与关键功能实现

5.1 串口通信层:摒弃System.IO.Ports.SerialPort,改用Windows API直驱

.NET的SerialPort类在高负载下存在缓冲区泄漏风险(尤其在Win10 RS5后)。我们改用P/Invoke调用Windows API CreateFile/ReadFile/WriteFile,优势明显:

  • 可精确控制DCB结构体,设置超时(ReadIntervalTimeout=0, ReadTotalTimeoutConstant=50);
  • 使用WaitForSingleObject监听串口事件,避免轮询CPU占用率飙升;
  • 自定义环形缓冲区(16KB),支持突发数据接收。
    核心代码片段:
[DllImport("kernel32.dll")] public static extern IntPtr CreateFile(string lpFileName, ...); private void OpenPort() { hPort = CreateFile($"\\\\.\\{portName}", ...); SetupComm(hPort, 16384, 16384); // 设置缓冲区 SetCommMask(hPort, EV_RXCHAR | EV_ERR); // 监听接收和错误事件 }

实测该方案在115200波特率下,连续接收100万帧数据无丢包,而SerialPort类在相同条件下丢包率达0.02%。

5.2 数据可视化:ZedGraph绘制实时曲线,支持历史回溯与导出

ZedGraph的DrawGraph()方法默认重绘整个画布,导致12串电压曲线刷新卡顿。我们优化为:

  • 为每条曲线创建独立PointPairList,仅更新变化点;
  • 启用DoubleBuffering(ChartPane.DoubleBuffer = true);
  • 滚动显示时,用PanModifier拖拽而非重绘,帧率从12fps提升至45fps。
    历史数据导出功能支持CSV和Excel(用EPPlus库),关键点在于时间戳对齐:上位机收到数据帧后,立即用DateTime.Now.Ticks记录本地时间,而非依赖BMS上传的时间戳(BMS无RTC)。这样确保导出文件中时间轴绝对准确,便于与示波器波形比对。

5.3 均衡控制:图形化操作界面,支持单体选择与自动模式

界面底部设计12个LED指示灯(绿色=正常,黄色=均衡中,红色=故障),点击任一LED可弹出均衡控制对话框:

  • 手动模式:勾选“启用均衡”,设置目标电压(如3.950V),点击“启动”即发送Modbus指令(寄存器40100=1);
  • 自动模式:设置均衡阈值(如压差>30mV),上位机定时读取电压,自动计算需均衡的单体并下发指令。
    为防误操作,所有均衡指令需二次确认,且下发后立即读回BQ76930的BALANCE_STATUS寄存器验证执行状态。

5.4 故障诊断:集成BMS日志解析器,一键定位问题

上位机内置日志分析模块,可导入BMS导出的BIN日志文件(每帧含时间戳+12串电压+温度+电流)。核心算法:

  • 自动识别“电压突变”事件(相邻帧差值>50mV);
  • 统计各单体电压标准差趋势,生成SOH衰减曲线;
  • 对比充放电阶段的OCV-SOC拟合度,判断电芯一致性。
    例如,某次测试中,日志分析器发现第7串电压在充电末期出现阶梯式上升(每次+12mV),结合温度数据确认为该电芯接触电阻增大,提前预警更换。

6. 实测问题排查与独家避坑指南

6.1 常见问题速查表

现象可能原因排查步骤解决方案
上位机无法识别串口USB转串口芯片驱动异常设备管理器检查COM端口号,拔插USB线观察端口变化重装CH341驱动(官网最新版),禁用Windows快速启动
单体电压读数全为0BQ76930未初始化或SPI通信失败用逻辑分析仪抓SPI波形,检查CS信号和CLK相位确认SPI模式为Mode0(CPOL=0, CPHA=0),CS低电平宽度>100ns
均衡不启动BQ76930的BALANCE_EN位未置位读取CONFIG寄存器,检查bit7是否为1在初始化代码中强制写CONFIG=0x80(启用均衡)
Modbus通信超时USART3硬件流控未启用用示波器测RTS引脚电平,发送时应为低电平在CubeMX中勾选Hardware Flow Control,代码中设置huart3.Init.HwFlowCtl=UART_HWCONTROL_RTS_CTS_ENABLE
SOC估算跳变温度传感器NTC分压电阻精度不足测量NTC两端电压,计算实际阻值更换为1%精度金属膜电阻,NTC选用TDK NTCG103JH103JT1

6.2 我踩过的三个深坑及血泪教训

坑一:BQ76930的TS1/TS2温度通道共模电压范围被低估
官方文档说TS输入范围是0~3.3V,但实测当NTC分压点电压低于0.3V时,读数严重失真。根源在于BQ76930内部温度ADC的输入级有钳位二极管,0.3V以下是未定义区。解决方案:在NTC分压电路中加入偏置电压(用100kΩ电阻接3.3V),确保冷端电压≥0.5V。这个细节TI文档只字未提,全靠示波器抓波形发现。

坑二:STM32F103的SysTick中断优先级必须高于SPI中断
我们曾将SPI中断设为最高优先级(NVIC_SetPriority(SPI1_IRQn, 0)),结果SysTick计时严重不准,导致100ms采集周期偏差达±15ms。原因:SysTick是系统滴答,若被高优先级中断长时间阻塞,会导致调度紊乱。正确做法:SysTick优先级设为0(最高),SPI设为1,确保系统时基稳定。

坑三:上位机导出Excel时中文乱码
用EPPlus生成的xlsx文件,在WPS中打开正常,但在Excel 2016中中文显示为方框。排查发现是字体嵌入问题。解决方案:在创建工作簿后,显式设置默认字体:

package.Workbook.Properties.DefaultThemeFont = "微软雅黑"; worksheet.Cells.Style.Font.Name = "微软雅黑";

这个坑让我加班到凌晨两点,只为让售后工程师能看清“温度”两个字。

7. 交付物说明与使用指引

本方案包含以下完整交付物,全部经过实车72小时连续运行验证:

  • 硬件部分
    • BQ76930+STM32F103最小系统原理图(PDF+Altium Designer源文件);
    • 关键PCB布局要点标注图(含AVSS隔离、VREF滤波、均衡电阻位置);
  • 固件部分
    • Keil MDK-ARM工程(含HAL库配置、BQ76930驱动、SOC算法、Modbus协议栈);
    • 编译后bin文件(已适配F103C8T6,无需修改即可烧录);
  • 上位机部分
    • VS2019 C#工程源码(含串口API封装、ZedGraph图表、日志分析器);
    • 编译后exe安装包(免安装,解压即用);
    • 详细使用手册(PDF,含接线图、功能说明、故障代码表)。

所有文件均打包为BMS_BQ76930_STM32F103_V2.3.zip,解压密码为bms2024

提示:首次使用请先阅读手册第3章“快速上手”,按步骤连接BMS与PC,运行上位机后点击“扫描串口”,选择对应COM号,点击“连接”即可实时查看12串电压曲线。均衡功能默认关闭,如需启用,请在“高级设置”中勾选“允许均衡控制”。

这套方案不是终点,而是起点。我在电动叉车项目中用它完成了CE认证,后续还基于此拓展了CAN通信模块(用TJA1050收发器)和无线透传功能(ESP32-WROOM-32作为Modbus TCP网关)。如果你在开发中遇到具体问题,比如“STM32F103怎么使用strcmp比较字符串”或“modbuspoll软件写STM32F103传感器”,欢迎带着现象和截图来交流——毕竟,真正的BMS开发,从来不是照着手册抄代码,而是在一次次实测、崩溃、重试中,把理论变成能扛住现场灰尘、震动和电磁干扰的可靠系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 11:22:14

STM32驱动绝对编码器实现100Hz高精度角度采集

简介&#xff1a;本资源是一套面向嵌入式开发工程师与自动化控制学习者的STM32驱动绝对式编码器实战代码包&#xff0c;聚焦高精度角度位置反馈这一工业控制核心需求&#xff0c;解决STM32如何稳定读取欧姆龙等品牌绝对编码器原始数据、解析为角度值并实时串口输出的关键问题。…

作者头像 李华
网站建设 2026/9/14 11:17:21

PaddleOCR+HTML网页OCR识别系统搭建指南

简介&#xff1a;这是一套基于PaddleOCR与Flask构建的Web端图像OCR识别系统&#xff0c;面向AI初学者、计算机视觉实践者及Web前后端开发者&#xff0c;解决图像与HTML页面中文字内容的快速提取与结构化识别问题。资源包共149个文件&#xff0c;含90张示例与测试用JPG图像、36种…

作者头像 李华
网站建设 2026/9/14 11:15:36

ES 索引服务降级方案:熔断、限流与副本动态调整的稳定性设计

ES 索引服务降级方案&#xff1a;熔断、限流与副本动态调整的稳定性设计 1. 引言 在分布式系统中&#xff0c;ElasticSearch&#xff08;以下简称 ES&#xff09;作为高性能搜索与分析引擎&#xff0c;广泛应用于日志分析、全文检索等场景。然而&#xff0c;随着业务规模扩大和…

作者头像 李华
网站建设 2026/9/14 11:14:57

树莓派 5 官方外壳 散热测试 Raspberry Pi Case for Raspberry Pi 5

1. 硬件 树莓派 5 外壳 2. 软件 stress 是一个简单且有效的压力测试工具&#xff0c;用于测试计算机系统在高负载下的稳定性。它可以对 CPU、内存、I/O 等系统资源施加压力&#xff0c;以帮助你评估系统的性能和稳定性。 sudo apt update sudo apt install stress3. 对 4 个…

作者头像 李华