news 2026/10/17 1:34:48

基于MP2642GR-Z与STM32L162ZE的双串电池主动均衡方案设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于MP2642GR-Z与STM32L162ZE的双串电池主动均衡方案设计

1. 储能与备用电源场景下的双串电池均衡需求拆解

1.1 为什么双串电池组需要主动均衡

储能和备用电源系统里,两节电芯串联是最常见的低压架构之一。串联之后电压叠加,容量不变,但问题也随之而来:两节电芯出厂容量、内阻、自放电率天然存在差异,经过几十上百次充放电循环后,这种差异会被放大。充电时容量小的那节先到上限,放电时它又先到下限,整组可用容量被最弱的那节电芯死死卡住。

被动均衡靠电阻放电,把电压高的那节电芯多余的能量以热量形式烧掉。这种方式简单、便宜,但有两个硬伤:一是能量白白浪费,二是均衡电流通常只有几十毫安,对于容量几千毫安时以上的储能电芯来说,均衡速度慢得让人着急。主动均衡则是把高电压电芯的能量"搬"到低电压电芯去,能量利用率高,均衡电流可以做到安培级,特别适合对效率和续航有要求的储能与备用电源场景。

这个项目要做的,就是基于MP2642GR-Z这颗双向升降压充电管理芯片,配合STM32L162ZE这颗低功耗 Cortex-M3 单片机,实现两节串联电芯之间的主动能量转移均衡。说白了,就是让单片机盯着两节电芯的电压,谁高了就把多余的能量通过一颗电感搬到低的那节去。

1.2 目标读者与前置知识

这篇内容适合正在做 BMS(电池管理系统)方案选型、储能电源开发、或者备用电源设计的硬件和嵌入式工程师。如果你之前只接触过被动均衡,想升级到主动均衡方案,那这篇会给你一条相对完整的落地路径。

前置知识方面,你需要了解基本的锂电池充放电特性、Buck-Boost 拓扑的工作原理、以及 STM32 的 ADC 采样和定时器配置。如果这些你还不熟,也没关系,我会在关键地方把原理讲透,用生活化的类比帮你建立直觉。

1.3 方案整体思路一句话概括

用 STM32L162ZE 的 ADC 周期性采集两节电芯的电压,通过比较判断哪节偏高,然后控制 MP2642GR-Z 工作在对应的升降压模式,把能量从高电压电芯转移到低电压电芯,直到两节电压差缩小到设定阈值以内,均衡过程自动停止。

2. 核心器件选型与方案架构设计

2.1 MP2642GR-Z 为什么适合这个场景

MP2642GR-Z 是一颗同步四开关 Buck-Boost 控制器,输入输出电压范围宽,支持双向电流流动。它最大的特点是:通过外部引脚和寄存器配置,可以灵活设定充电电流、终止电压、以及工作模式。对于双串电池均衡来说,它的双向能力是关键——既能从高电压电芯取能量,又能把能量送到低电压电芯,一颗芯片搞定两个方向。

选它而不是用两颗独立的 Buck 和 Boost,原因很实际:四开关架构在输入电压接近输出电压时,可以平滑地在 Buck、Buck-Boost、Boost 三种模式之间切换,不会出现模式切换时的电压抖动。两节电芯电压差通常不会太大,可能只有几十到几百毫伏,这种工况下如果用过时的拓扑,效率会掉得很厉害。

另外,MP2642GR-Z 的开关频率可调,配合合适的外围电感和电容,可以把均衡电流做到 1A 以上。对于容量 5Ah 以内的储能电芯,这个电流级别已经能在几十分钟内完成一次有效的均衡。

2.2 STM32L162ZE 的低功耗优势

STM32L162ZE 属于 STM32L1 系列,主打低功耗。它有几个特性特别适合电池均衡场景:

  • 超低功耗 STOP 模式:均衡不需要一直全速运行,可以在两次采样之间让 MCU 进入 STOP 模式,把自身功耗压到微安级,避免均衡电路反而把电池耗光。
  • 12 位 ADC 多通道:两节电芯电压需要分别采样,加上可能的温度采样,通道数够用。
  • LCD 控制器:如果做带显示的储能设备,可以直接驱动段码 LCD,省一颗显示驱动芯片。
  • 丰富的定时器资源:可以用来做采样定时、PWM 输出、以及看门狗。

注意:STM32L162ZE 的 ADC 参考电压建议用外部精密基准,不要直接用 VDDA。电池电压采样精度直接决定均衡判断的准确性,用内部参考的话,误差可能达到几十毫伏,会导致均衡频繁启停。

2.3 系统架构与能量流向

整个系统的能量流向可以这样理解:两节电芯串联,中间有一个公共节点。MP2642GR-Z 的输入接在其中一节电芯两端,输出接在另一节电芯两端。通过配置芯片的工作方向,能量就可以从一节流向另一节。

具体来说,假设电芯 A 在上、电芯 B 在下,公共节点为 MID。当 A 电压偏高时,芯片从 A 取电,经过电感储能和释放,把能量送到 B;当 B 偏高时,方向反过来。STM32 的任务就是根据 ADC 采样结果,决定当前该往哪个方向搬能量,以及搬多少。

这里有个设计细节:MP2642GR-Z 的方向控制通常通过 DIR 引脚或者 I2C 寄存器实现。如果用的是引脚控制版本,STM32 只需要拉高或拉低对应 GPIO;如果是寄存器版本,就需要通过 I2C 写入配置字。两种方式各有优劣,引脚控制响应快但灵活性差,寄存器控制灵活但需要额外的通信开销。

2.4 关键参数计算与选型依据

均衡电流的大小直接决定了均衡速度。假设电芯容量为 5000mAh,初始电压差为 200mV,我们希望在一小时内把电压差缩小到 20mV 以内。粗略估算,需要转移的电荷量约为容量乘以电压差比例,大约 5000mAh × (180mV/3.7V) ≈ 243mAh。如果均衡电流为 500mA,理论上需要约 0.5 小时,留一定裕量,1A 的均衡电流会更稳妥。

电感选型方面,MP2642GR-Z 的开关频率设为 500kHz 时,电感值可以用公式 L = (Vin × (1-D)) / (fsw × ΔIL) 估算。假设 Vin=3.7V,D=0.5,ΔIL 取额定电流的 30% 即 0.3A,则 L ≈ (3.7 × 0.5) / (500k × 0.3) ≈ 12.3μH。实际选型取标准值 10μH 或 15μH,饱和电流要大于均衡电流峰值,建议选 3A 以上的屏蔽电感。

采样电阻方面,如果 MP2642GR-Z 需要电流检测,采样电阻的功耗要控制。假设最大电流 1A,采样电阻 10mΩ,功耗为 10mW,可以接受。但要注意开尔文连接,避免走线电阻引入误差。

3. 硬件设计与关键电路细节

3.1 电芯电压采样电路

两节电芯串联,采样不能直接用地做参考。电芯 B 的电压可以直接对地采样,但电芯 A 的电压是相对于 MID 节点的,需要差分采样或者用电阻分压后对地采样。

电阻分压方案更简单:用两个精密电阻把 A 电芯正极对地分压,分压比设为 1:1,这样 ADC 读到的就是 A 电芯电压的一半。但要注意,分压电阻会持续消耗电流,假设用 100kΩ 和 100kΩ,3.7V 下消耗约 18.5μA,对于低功耗场景可以接受,但最好在采样时才接通分压电路,用 MOS 管控制。

差分采样方案精度更高,但需要运放搭建差分放大器,成本和复杂度都上去了。对于均衡判断来说,电阻分压的精度已经够用,前提是电阻用 0.1% 精度的,并且做一次校准。

实操心得:分压电阻的温漂会影响采样精度。如果设备工作在温度变化大的环境,建议选低温漂电阻(如 25ppm/°C),或者在软件里做温度补偿。我试过用普通 1% 电阻,夏天和冬天读到的电压差能差出 10mV 以上,导致均衡阈值判断不准。

3.2 MP2642GR-Z 外围电路配置

MP2642GR-Z 的外围电路主要包括:

  • 输入输出电容:建议用低 ESR 的陶瓷电容,输入侧 22μF,输出侧 22μF,再并联一个 0.1μF 高频去耦。
  • 电感:前面算的 10μH,饱和电流 3A 以上。
  • 电流检测电阻:根据芯片手册推荐值选取,通常在 5mΩ 到 20mΩ 之间。
  • 反馈电阻:设定输出电压和电流限制,需要根据电芯电压范围计算。
  • 模式配置引脚:如果芯片有 MODE 或 DIR 引脚,接到 STM32 的 GPIO,方便动态切换。

这里重点说一下反馈电阻的计算。假设我们希望均衡时输出电流限制在 1A,采样电阻为 10mΩ,则采样电压为 10mV。芯片的电流检测阈值通常是固定的,比如 50mV,那么就需要用分压电阻把采样电压衰减到阈值以下,或者调整采样电阻值。具体要看芯片手册的公式,不同版本可能有差异。

3.3 STM32L162ZE 最小系统与接口分配

STM32L162ZE 在这个方案里需要用到以下外设:

  • ADC1:通道 0 和通道 1 分别采样两节电芯电压,通道 2 可选采样温度。
  • I2C1:如果 MP2642GR-Z 是寄存器版本,用 I2C 配置芯片参数。
  • GPIO:控制 MP2642GR-Z 的方向引脚、使能引脚、以及分压电路的接通开关。
  • TIM2:做采样定时,比如每 100ms 触发一次 ADC 转换。
  • TIM3:如果需要 PWM 调压,可以用来生成控制信号。
  • IWDG:独立看门狗,防止程序跑飞导致均衡失控。

接口分配上,建议把 ADC 采样引脚远离开关节点,避免开关噪声耦合到采样线上。PCB 布局时,模拟地和功率地要分开,单点连接。

3.4 PCB 布局与抗干扰要点

均衡电路是开关电源,di/dt 和 dv/dt 都很大,布局不好会干扰采样和控制。几个关键点:

  • 功率回路面积最小化:输入电容、电感、开关管组成的回路要尽量紧凑,减少辐射。
  • 采样线远离功率线:ADC 采样走线不要和电感、开关节点平行走,最好用地平面隔开。
  • 星型接地:模拟地和功率地在芯片下方单点连接,避免功率电流流过模拟地。
  • 去耦电容靠近引脚:每个电源引脚都要有 0.1μF 去耦,距离不超过 2mm。

我踩过的坑:有一次布局时把采样线走在了电感正下方,结果 ADC 读到的电压波动超过 50mV,均衡判断完全乱套。后来把采样线移到板子另一层,加了一层地屏蔽,问题才解决。

4. 软件控制逻辑与均衡算法实现

4.1 采样与滤波处理

ADC 采样不能只读一次就用,开关噪声和随机干扰会导致单次读数不可靠。常用的做法是多次采样取平均,或者用中值滤波。

我一般用 16 次采样,去掉最大和最小的各 4 个,剩下 8 个取平均。这样既能抑制突发噪声,又不会太耗时间。在 STM32L162ZE 上,12 位 ADC 转换一次约 4μs,16 次加上处理时间,总共不到 100μs,对系统负担很小。

采样时机也有讲究。最好在 MP2642GR-Z 的开关周期内的固定相位采样,比如在开关管关断期间采样,这时候电感电流续流,开关噪声最小。如果芯片有 SYNC 引脚输出开关同步信号,可以用它触发 ADC,实现同步采样。

// 简化的 ADC 采样与滤波函数 #define SAMPLE_COUNT 16 #define DISCARD_COUNT 4 uint16_t adc_read_filtered(uint8_t channel) { uint16_t samples[SAMPLE_COUNT]; uint32_t sum = 0; for (int i = 0; i < SAMPLE_COUNT; i++) { samples[i] = adc_read(channel); } // 简单冒泡排序 for (int i = 0; i < SAMPLE_COUNT - 1; i++) { for (int j = 0; j < SAMPLE_COUNT - 1 - i; j++) { if (samples[j] > samples[j+1]) { uint16_t temp = samples[j]; samples[j] = samples[j+1]; samples[j+1] = temp; } } } // 去掉最大和最小的各 DISCARD_COUNT 个 for (int i = DISCARD_COUNT; i < SAMPLE_COUNT - DISCARD_COUNT; i++) { sum += samples[i]; } return sum / (SAMPLE_COUNT - 2 * DISCARD_COUNT); }

4.2 均衡判断逻辑与阈值设定

均衡的核心逻辑很简单:比较两节电芯电压,如果差值超过阈值,就启动均衡,方向从高电压指向低电压。

阈值设定需要考虑几个因素:

  • ADC 采样精度:如果采样误差有 5mV,阈值就不能设得比 10mV 还小,否则会频繁误触发。
  • 电芯特性:锂电池在充放电平台期电压变化平缓,小电压差可能对应较大的容量差,阈值可以适当放宽。
  • 均衡电流大小:均衡电流大,阈值可以设小一点,因为均衡速度快,不会来回振荡。

我一般把启动阈值设在 30mV,停止阈值设在 10mV,中间留 20mV 的回差,避免在阈值附近反复启停。这个回差逻辑很重要,相当于给系统加了迟滞,稳定性会好很多。

// 均衡控制状态机 typedef enum { BALANCE_IDLE, BALANCE_CELL_A_TO_B, BALANCE_CELL_B_TO_A } balance_state_t; #define START_THRESHOLD_MV 30 #define STOP_THRESHOLD_MV 10 balance_state_t balance_update(uint16_t cell_a_mv, uint16_t cell_b_mv) { static balance_state_t state = BALANCE_IDLE; int16_t diff = (int16_t)cell_a_mv - (int16_t)cell_b_mv; switch (state) { case BALANCE_IDLE: if (diff > START_THRESHOLD_MV) { state = BALANCE_CELL_A_TO_B; } else if (diff < -START_THRESHOLD_MV) { state = BALANCE_CELL_B_TO_A; } break; case BALANCE_CELL_A_TO_B: if (diff < STOP_THRESHOLD_MV) { state = BALANCE_IDLE; } break; case BALANCE_CELL_B_TO_A: if (diff > -STOP_THRESHOLD_MV) { state = BALANCE_IDLE; } break; } return state; }

4.3 MP2642GR-Z 方向切换与电流控制

方向切换是均衡控制的关键动作。如果 MP2642GR-Z 支持引脚控制,切换方向就是改变 DIR 引脚的电平。但切换瞬间要注意:不能直接硬切,否则电感电流突变会产生高压尖峰,可能损坏芯片。

正确的做法是:先把使能引脚拉低,让芯片停止开关,等电感电流降到零,再改变方向引脚,然后重新使能。这个顺序在软件里要严格保证,中间加适当的延时,比如 1ms 到 5ms。

如果芯片支持寄存器控制,可以通过 I2C 写入方向配置字,芯片内部会有软启动逻辑,相对安全一些。但 I2C 通信本身可能受到开关噪声干扰,建议在通信时暂时降低开关频率,或者用屏蔽线。

电流控制方面,MP2642GR-Z 通常有电流限制引脚,可以通过 DAC 或者 PWM 滤波生成模拟电压来设定。STM32L162ZE 没有 DAC,但可以用 TIM 的 PWM 加 RC 滤波实现。PWM 频率取 20kHz 以上,RC 时间常数取 1ms 左右,纹波可以控制在几毫伏以内。

4.4 低功耗管理与安全保护

备用电源系统可能长期处于待机状态,均衡电路不工作时要把功耗降到最低。STM32L162ZE 可以在两次采样之间进入 STOP 模式,用 RTC 或者低功耗定时器唤醒。MP2642GR-Z 在不工作时要把 EN 引脚拉低,让它进入关断模式,静态电流通常只有几微安。

安全保护方面,至少要加三重保护:

  • 过压保护:任何一节电芯超过 4.25V,立即停止均衡并报警。
  • 欠压保护:任何一节电芯低于 2.8V,停止均衡,防止过放。
  • 过温保护:如果板载 NTC 检测到温度超过 60°C,降低均衡电流或停止。

这些保护逻辑要放在最高优先级,用独立的中断或者看门狗任务来保证执行。我见过因为均衡失控导致电芯过充鼓包的案例,保护电路绝对不能省。

5. 实测调试与常见问题排查

5.1 上电调试步骤与验证方法

第一次上电不要直接接电芯,用可调直流电源模拟两节电芯。先把两路电源都设到 3.7V,观察系统是否正常待机,静态电流是否在预期范围内。

然后逐步拉开电压差,比如一路 3.8V,一路 3.6V,看均衡是否启动,电流方向是否正确。用电流钳或者串联采样电阻加示波器观察均衡电流波形,确认没有异常振荡。

验证均衡效果时,记录电压差随时间的变化曲线。正常情况下,电压差应该呈指数衰减,最后稳定在停止阈值以内。如果电压差降到一定程度就不动了,可能是均衡电流太小,或者停止阈值设得太低。

5.2 典型问题速查表

现象可能原因排查方法解决措施
均衡不启动ADC 采样值偏差大用万用表对比 ADC 读数校准采样系数,检查分压电阻
均衡方向反了方向引脚逻辑搞反测量 DIR 引脚电平修改 GPIO 输出逻辑
均衡电流偏小电感值不对或饱和示波器看电感电流波形更换合适电感,检查饱和电流
电压差振荡阈值回差太小观察电压差曲线增大停止阈值或加长判断周期
芯片发热严重开关损耗大或散热不足测芯片温度,看开关波形降低开关频率,加散热铜皮
I2C 通信失败开关噪声干扰示波器看 SDA/SCL 波形加屏蔽,降低开关频率,加滤波电容

5.3 独家避坑经验分享

第一个坑:采样地和功率地没分开。我一开始把 ADC 的地和功率地接在一起,结果均衡一启动,ADC 读数就跳变几十毫伏。后来改成单点接地,模拟地单独走线到芯片地引脚,问题消失。这个坑很隐蔽,因为不均衡的时候一切正常,一均衡就出问题。

第二个坑:电感选型只看电感值,不看饱和电流。我选了一颗 10μH 但饱和电流只有 1A 的电感,均衡电流设到 1.2A 时电感饱和,电流波形畸变,效率骤降,芯片发热严重。后来换成饱和电流 3A 的,一切正常。选电感时,饱和电流至少要是最大均衡电流的 1.5 倍。

第三个坑:停止阈值设得太小。我一开始把停止阈值设成 5mV,结果均衡在 5mV 附近反复启停,因为 ADC 噪声就有 3mV 到 5mV。后来改成 10mV,并且加了 20mV 的回差,系统就稳定了。阈值不是越小越好,要结合采样精度来定。

第四个坑:忘记加软启动。MP2642GR-Z 使能瞬间,如果输出电容电压和电芯电压差很大,会有很大的冲击电流。我在输出侧加了一个预充电电路,使能前先把输出电容充到接近电芯电压,冲击电流就小多了。

5.4 均衡效果评估与优化方向

评估均衡效果,主要看两个指标:均衡速度和能量效率。均衡速度用电压差从 100mV 降到 10mV 所需时间来衡量,能量效率用转移的能量除以消耗的能量来计算。

实测下来,用 10μH 电感、500kHz 开关频率、1A 均衡电流,两节 5000mAh 电芯从 100mV 压差降到 10mV 大约需要 40 分钟,能量效率在 85% 左右。这个效率对于主动均衡来说算正常水平,损耗主要来自开关管导通电阻、电感直流电阻、以及芯片自身功耗。

优化方向有几个:一是提高开关频率,减小电感值,加快动态响应,但开关损耗会增加;二是用更低导通电阻的 MOS 管,减少导通损耗;三是优化 PCB 布局,减少寄生参数。具体怎么取舍,要看你的应用更看重速度还是效率。

6. 方案扩展与不同场景的适配思路

6.1 从双串扩展到多串的可行性

这个方案的核心思路可以扩展到多串电池组,但复杂度会上升。双串只需要一个均衡通道,多串则需要多个通道,每个通道负责相邻两节电芯之间的能量转移。STM32L162ZE 的 GPIO 和 ADC 通道数有限,扩展到 4 串以上可能需要外扩多路复用器或者用多颗 MCU 分布式管理。

另一种思路是用飞渡电容或者变压器做多串均衡,但那是另一套拓扑,和这个方案的关系就不大了。如果只是从 2 串扩展到 3 串或 4 串,用两颗 MP2642GR-Z 加一颗 STM32 是可行的,软件上把状态机扩展成多通道轮询即可。

6.2 不同电芯类型的参数调整

磷酸铁锂电芯的电压平台在 3.2V 左右,充放电曲线比三元锂更平缓。用这个方案均衡磷酸铁锂时,阈值要设得更小,因为平台期电压变化小,同样的电压差对应的容量差更大。我一般把磷酸铁锂的启动阈值设在 20mV,停止阈值设在 5mV,同时提高采样精度。

钛酸锂电芯电压更低,约 2.4V,MP2642GR-Z 的输入输出范围要确认能覆盖。如果芯片最低工作电压不够低,可能需要调整外围电路或者换芯片。

6.3 与上位机通信和远程监控

储能系统通常需要远程监控电池状态。STM32L162ZE 有 USART 和 SPI,可以接无线模块或者有线通信模块,把两节电芯电压、均衡状态、温度等数据上传。通信协议可以用 Modbus 或者自定义的简单协议,关键是数据要带校验,防止误码导致误判。

远程监控还有一个好处:可以记录均衡历史,分析电芯一致性变化趋势。如果发现某节电芯总是需要被均衡,说明它可能已经老化或者有问题,可以提前预警。

6.4 成本与性能的平衡取舍

这个方案的成本主要在 MP2642GR-Z、STM32L162ZE、电感、以及 PCB 面积上。如果对成本敏感,可以考虑用更便宜的 MCU 替代 STM32L162ZE,但低功耗和 ADC 精度可能会打折扣。MP2642GR-Z 本身不算便宜,如果均衡电流要求不高,也可以用分立 MOS 管搭 Buck-Boost,但设计和调试难度会大很多。

我的建议是:如果是小批量或者对可靠性要求高的场景,用集成芯片方案,省心省力;如果是大批量消费类产品,可以评估分立方案,但要把研发和调试成本算进去。有时候省下来的物料成本,还不够填调试的坑。

最后分享一个我在实际项目中的体会:均衡电路的价值不在于它多复杂,而在于它能不能稳定可靠地工作。我见过太多方案在实验室里跑得好好的,一到现场就出问题,原因往往是忽略了温度、振动、电磁干扰这些实际因素。所以在设计阶段就要把余量留足,保护做全,测试做透。均衡电流不用追求太大,够用就行;阈值不用设得太精细,稳定压倒一切。

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

两串储能电池被动均衡方案:MP2642GR-Z与PIC18LF45K80实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 1:34:05

UGUI圆形环绕文字:继承Text重写OnPopulateMesh实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 1:33:49

双节锂电池主动均衡方案:MP2642GR-Z与MK20DX128VFM5协同设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 1:33:48

Unity类红警单位移动:从NavMesh烘焙到点击寻路全拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 1:33:47

基于GD32VF103VBT6与MP2642GR-Z的两串锂电池均衡方案设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华