江科大STM32入门:PWR电源控制详解——从电源框图到低功耗模式
STM32学习笔记适用平台STM32F103C8T6Cortex-M3内核参考标准STM32F10xxx参考手册RM0008一、前言说实话刚接触STM32的时候我对PWR这个外设完全是视而不见的。心里想电源不就是接上3.3V就完事了吗直到后来做电池供电的项目发现板子跑一天就没电了才开始研究低功耗模式这时候才后悔没早点学PWR。PWRPower Control电源控制这个外设说白了就管两件事监控电压看看你的供电稳不稳不稳就报警管理功耗系统空闲时让STM32睡一会儿省下电来延长续航今天这篇文章我就结合江科大老师的PPT和《STM32F10xxx参考手册》把PWR的知识点从头到尾捋一遍。文章会比较长但我会尽量争取让初学者也能一遍看懂。二、PWR简介STM32的电源大管家PWR模块负责管理STM32内部的电源供电部分主要实现两大功能可编程电压监测器PVD实时监控VDD电源电压当电压异常时触发中断让我们有机会执行紧急保存任务低功耗模式包括睡眠模式Sleep、停机模式Stop和待机模式Standby系统空闲时降低功耗延长设备使用时间我的理解你可以把PWR想象成手机的省电管家。PVD就像低电量提醒低功耗模式就像手机的息屏待机。STM32不像电脑有独立的电源管理芯片PWR就是集成在芯片内部的电源管理单元。三、STM32电源框图解析电都去哪了要理解PWR首先得知道STM32内部是怎么供电的。下面这张图来自参考手册展示了STM32F103的电源分配架构图1STM32F103电源框图来自《STM32F10xxx参考手册》图4从框图里可以看到STM32内部把电源分成了四个供电区域3.1 VDDA供电区域模拟供电供电对象A/D转换器ADC、温度传感器、复位模块、PLL锁相环特点模拟电路对电源噪声敏感所以VDDA要单独供电并且通过VREF和VREF-提供参考电压注意VREF范围是2.4V~VDDAVSSA和VDD必须分别联到VSS和VDD3.2 VDD供电区域数字供电供电对象I/O电路、待机电路唤醒逻辑、IWDG独立看门狗、电压调节器特点这是数字电路的主供电区域3.3 1.8V供电区域内核供电供电对象CPU核心、存储器SRAM/Flash、内置数字外设特点这个区域的电不是直接从外部引脚来的而是由电压调节器把VDD降压到1.8V供给的。你可以理解为外部供3.3V但CPU内核只吃1.8V的细粮3.4 后备供电区域Backup Domain供电对象LSE 32.768KHz晶体振荡器、后备寄存器、RCC BDCR寄存器、RTC实时时钟特点这个区域比较特殊它可以通过VBAT引脚接纽扣电池供电。也就是说即使主电源VDD断电只要VBAT有电RTC和后备寄存器的数据就不会丢我的理解这四个区域就像一栋大楼的四套供电系统。VDDA是精密实验室的专用电源怕干扰1.8V区域是核心机房的UPS电源最重要VDD是普通办公区电源VBAT是应急照明电源主电源断了也能工作。四、上电复位与掉电复位芯片的保险丝了解即可STM32内部集成了一个上电复位POR和掉电复位PDR电路这是芯片自带的保险丝不需要我们配置。图2上电复位(POR)与掉电复位(PDR)波形图来自参考手册图54.1 上电复位POR当你给STM32上电时VDD从0V慢慢上升到3.3V。当电压上升到POR阈值时芯片解除复位开始正常工作。在电压达到POR阈值之前芯片一直处于复位状态防止半死不活的电压导致程序跑飞。4.2 掉电复位PDR当VDD电压下降时芯片不会立刻复位而是要降到PDR阈值以下才复位。POR阈值比PDR阈值高大约40mV这个差值叫做迟滞Hysteresis。4.3 为什么要设计40mV迟滞想象一下如果POR和PDR阈值一样电源电压在阈值附近波动时芯片会反复复位-启动-复位-启动陷入抽风状态。40mV的迟滞就像给复位电路加了一个防抖电压必须掉到一定程度才复位必须升到一定程度才启动避免了这种抖动。我的理解这就像我们设定的空调温度。如果你设26度开机、26度关机空调会频繁启停。所以实际都是26度开机、25度关机或者反过来有个回差。STM32的POR/PDR也是这个原理。五、可编程电压监测器PVD自定义的低电量提醒POR和PDR是芯片自动管理的阈值固定我们干预不了。但STM32还提供了一个可编程电压监测器PVD让我们可以自定义一个电压阈值当VDD低于这个阈值时触发中断。图3PVD门限与迟滞示意图来自参考手册图65.1 PVD的工作原理PVD可以监控VDD电源电压我们可以编程设置一个PVD阈值通过PWR_CR寄存器的PLS位选择共有8个档位从2.2V到2.9V当VDD下降到PVD阈值以下或者上升到PVD阈值以上时PVD会触发中断PVD也有100mV的迟滞防止电压在阈值附近抖动导致中断频繁触发5.2 PVD能干什么PVD触发的是外部中断线16EXTI Line16。当电压不足时我们可以在中断服务函数里执行紧急任务比如保存关键数据到Flash或EEPROM关闭大功率外设记录掉电日志gracefully 地关闭系统我的理解PVD就像手机的低电量模式提醒。手机20%电量提醒你省电PVD就是让你在电压降到某个值之前赶紧把没保存的文档CtrlS一下。这个阈值是可以调的比如你用电池供电可以设2.6V用稳压电源可以设2.4V。六、低功耗模式概述三种睡觉姿势这是PWR模块的重头戏。STM32F103提供了三种低功耗模式省电程度依次递增但唤醒后的恢复代价也依次增大。图4低功耗模式一览表来自参考手册表8模式进入方式唤醒方式对1.8V区域时钟的影响对VDD区域时钟的影响电压调节器睡眠(Sleep-now / Sleep-on-exit)WFI / WFE任一中断 / 唤醒事件CPU时钟关其他时钟和ADC时钟无影响无开停机(Stop)PDDS0和LPDS位 SLEEPDEEP位 WFI/WFE任一外部中断(EXTI)关闭所有1.8V区域的时钟HSI和HSE的振荡器关闭开启0或低功耗1待机(Standby)PDDS1位 SLEEPDEEP位 WFI/WFEWKUP上升沿、RTC闹钟、NRST外部复位、IWDG复位关闭所有1.8V区域的时钟HSI和HSE的振荡器关闭关我的理解这三种模式就像人类的三种休息状态——睡眠模式 打盹眼睛闭着但耳朵还听着随时能醒停机模式 深度睡眠闹钟响了才醒醒来还记得睡前的事待机模式 昏迷需要电击除颤才能醒醒了之后失忆啥都不记得七、低功耗模式的选择逻辑一张图看懂怎么睡图5低功耗模式选择流程图执行WFIWait For Interrupt或WFEWait For Event指令后STM32到底进入哪种低功耗模式由以下几个寄存器位共同决定7.1 第一步SLEEPDEEP位SCB-SCR寄存器SLEEPDEEP 0进入睡眠模式浅睡SLEEPDEEP 1进入深度睡眠模式停机或待机7.2 第二步如果是睡眠模式SLEEPDEEP0由SLEEPONEXIT位决定SLEEPONEXIT 0Sleep-now执行完WFI/WFE后立刻进入睡眠SLEEPONEXIT 1Sleep-on-exit等STM32从最低优先级的中断处理程序中退出时才进入睡眠我的理解Sleep-now就是我现在就要睡Sleep-on-exit就是我把手头这个中断处理完再睡。后者适合中断驱动的程序避免在处理中断时被打断。7.3 第三步如果是深度睡眠SLEEPDEEP1由PDDS位PWR_CR寄存器决定PDDS 0进入停机模式PDDS 1进入待机模式7.4 第四步停机模式下的电压调节器如果进入停机模式还可以由LPDS位PWR_CR寄存器决定电压调节器状态LPDS 0电压调节器开启唤醒快但功耗稍高LPDS 1电压调节器进入低功耗模式功耗更低但唤醒有额外延时八、睡眠模式详解最轻度的打盹8.1 进入方式执行WFI或WFE指令后进入。8.2 核心特点程序暂停运行唤醒后从暂停的地方继续运行CPU时钟关闭但其他外设时钟和ADC时钟不受影响所有I/O引脚保持运行模式时的状态电压调节器保持开启8.3 唤醒方式WFI进入可被任意一个NVIC响应的中断唤醒WFE进入可被唤醒事件唤醒8.4 SLEEPONEXIT的妙用如果你写了一个中断驱动的程序主循环里没事干可以设置SLEEPONEXIT1。这样每次中断处理完后自动进入睡眠有中断来了再唤醒处理处理完又自动睡非常省电。我的理解睡眠模式就像上课偷睡——老师讲课主程序暂停了但你的耳朵NVIC中断还竖着老师点你名中断来了你立刻就醒了而且还记得睡前讲到哪了程序继续执行。这是最常用的低功耗模式因为唤醒快、不丢数据。九、停止模式详解中度冬眠9.1 进入方式需要配置PDDS 0选择停机不是待机SLEEPDEEP 1可选设置LPDS位执行WFI或WFE9.2 核心特点1.8V供电区域的所有时钟都被停止PLL、HSI和HSE被禁止高速时钟全关了SRAM和寄存器内容被保留醒来还记得事所有I/O引脚保持运行模式时的状态电压调节器可配置为开启或低功耗模式9.3 唤醒方式WFI进入可被任意一个EXTI外部中断唤醒WFE进入可被任意一个EXTI事件唤醒9.4 唤醒后的重要注意事项当退出停止模式时HSI8MHz内部高速时钟会被自动选为系统时钟这意味着如果你之前用HSEPLL跑在72MHz唤醒后系统时钟变成了8MHz必须在唤醒后重新配置系统时钟恢复到72MHz9.5 LPDS位的影响LPDS 0电压调节器正常开启唤醒快但停机时功耗约24μALPDS 1电压调节器低功耗模式停机时功耗约14μA但唤醒有额外启动延时我的理解停止模式就像冬天动物的冬眠——心跳高速时钟停了但记忆SRAM还在。醒来的时候身体很虚需要先缓一缓HSI默认启动然后再慢慢恢复到满血状态重新配PLL。如果你忘了重新配时钟就会以为芯片变卡了其实它只是在用8MHz跑。十、待机模式详解最彻底的关机10.1 进入方式需要配置PDDS 1选择待机SLEEPDEEP 1执行WFI或WFE10.2 核心特点重点整个1.8V供电区域被断电PLL、HSI和HSE也被断电SRAM和寄存器内容全部丢失醒来失忆了只有备份寄存器和待机电路维持供电所有I/O引脚变为高阻态浮空输入电压调节器关闭10.3 唤醒方式非常有限WKUP引脚PA0的上升沿RTC闹钟事件的上升沿NRST引脚上的外部复位IWDG独立看门狗复位10.4 唤醒后的行为待机模式唤醒后程序从头开始运行从main函数开始因为SRAM都丢了之前的数据全没了。10.5 待机模式的应用场景电池供电设备长时间不用时彻底断电通过RTC定时唤醒采集数据比如每小时醒一次采集完又待机按键唤醒WKUP引脚我的理解待机模式就像电脑关机——按电源键WKUP/NRST重新开机之前的程序全没了系统从头启动。它的功耗最低约2μA但代价最大。用待机模式之前一定要想清楚我有没有数据需要保存因为醒来之后RAM里啥都没了只有备份寄存器和RTC还存着。十一、个人理解 / 学习心得11.1 三种模式怎么选通过这段时间的学习我总结了一个选择低功耗模式的傻瓜公式你的需求推荐模式想省电但要求中断来了立刻响应程序不能从头跑睡眠模式想大幅省电程序能接着跑可以用EXTI唤醒停机模式想极致省电能接受程序从头跑有RTC或按键唤醒待机模式11.2 关于停止模式唤醒后时钟的坑江科大老师在视频里特别强调过停止模式唤醒后时钟会变成HSI 8MHz。我的理解是STM32设计成这样是为了快速唤醒——HSI是内部RC振荡器上电就能用不需要等晶振起振。如果唤醒后直接用HSEPLL得等晶振稳定唤醒时间会更长。所以ST选择了先让芯片活过来HSI再慢慢恢复到满血PLL的策略。11.3 PVD的实际意义刚开始我觉得PVD很鸡肋——都有POR/PDR了还要PVD干嘛后来想明白了POR/PDR是救死的电压太低就复位防止芯片跑飞PVD是扶伤的电压不太低但有点危险时提醒你。就像医院的ICU和普通病房POR/PDR是急救PVD是预警。11.4 电源框图给我的启发看了电源框图我才明白为什么ADC采集的时候数据总是跳——原来VDDA和VDD虽然理论上要接在一起但如果布线不好模拟电源被数字电路干扰了ADC就不准。以后画板子一定要把VDDA和VSSA单独走线靠近芯片处用磁珠或0Ω电阻连接。十二、踩坑记录⚠️ 以下内容为踩坑记录都是血泪教训❌ 坑1停止模式唤醒后忘记重新配置系统时钟现象进入停止模式后用按键EXTI唤醒发现LED闪烁变慢了串口波特率也不对了。原因停止模式唤醒后系统时钟自动切换为HSI8MHz而之前配置的是HSE 8MHz PLL 9倍频 72MHz。所有依赖系统时钟的外设USART、TIM等都跟着变慢了。解决在唤醒中断里调用系统时钟配置函数重新设置PLL。❌ 坑2待机模式唤醒后程序从头跑以为芯片复位了现象设置待机模式后用RTC闹钟唤醒发现变量全清零了以为芯片异常复位。原因待机模式1.8V区域断电SRAM数据丢失唤醒相当于一次软复位程序从main重新开始。解决需要保存的数据提前写入备份寄存器BKP或Flash。唤醒后通过判断PWR_CSR的SBF位待机标志和WUF位唤醒标志来区分是正常上电还是待机唤醒。十三、总结表格最后我把今天讲的知识点整理成一张大表格方便大家复习查阅知识点核心内容关键参数/寄存器PWR功能电源管理PVD电压监测 三种低功耗模式-供电区域VDDA模拟、VDD数字、1.8V内核、VBAT后备电压调节器降压供1.8V区域POR/PDR上电/掉电自动复位40mV迟滞防抖动tRSTTEMPO滞后时间PVD可编程阈值监测VDD100mV迟滞触发EXTI Line16中断PLS[2:0]选择8档阈值睡眠模式CPU停外设不停I/O保持任意NVIC中断/事件唤醒SLEEPDEEP0SLEEPONEXIT选择时机停止模式1.8V时钟全停PLL/HSI/HSE禁SRAM保留EXTI唤醒SLEEPDEEP1, PDDS0, LPDS选调节器模式待机模式1.8V断电SRAM丢失I/O浮空程序从头跑SLEEPDEEP1, PDDS1停止唤醒注意唤醒后时钟自动切HSI 8MHz需手动恢复72MHz重新配置RCC待机唤醒注意只有WKUP、RTC闹钟、NRST、IWDG四种方式PWR_CSR的SBF/WUF标志判断十四、结语写这篇文章的时候我把江科大的视频又回顾了一遍同时对照参考手册逐条核对。以前觉得PWR就是睡眠、停机、待机六个字真正深入下去才发现光是唤醒后时钟怎么变这个细节就藏着很多设计上的考量。STM32的电源管理设计得非常精巧——POR/PDR保安全、PVD做预警、三种低功耗模式覆盖不同场景。理解这些机制不仅能帮我们写出更省电的代码也能让我们对嵌入式系统的电源架构有更深的认识。如果你也在学STM32建议一定要动手试试这三种低功耗模式用万用表测一下各模式下的电流消耗那种眼见为实的感觉和看PPT是完全不一样的。开发环境Keil5 STM32F103C8T6最小系统板 ST-Link参考资料江科大STM32入门教程、《STM32F10xxx参考手册》前置文章STM32入门教程BKP备份寄存器 RTC实时时钟详解如果本文对你有帮助欢迎点赞 收藏 ⭐ 有任何问题欢迎在评论区交流一起学习进步

相关新闻

C语言复习:深入理解指针(1)

C语言复习:深入理解指针(1)

一、内存与地址1.内存CPU处理数据,需要从内存中读取数据,处理后的数据也会放到内存之中,我们买的电脑都是16GB/32GB ,那我们内存该如何管理这些数据呢?内存分为了一个个的内存单元,每个内存单元的大小都为1…

2026/10/19 5:21:20 阅读更多 →
免费风扇控制软件FanControl怎么用?3步接管CPU、显卡与机箱风扇的调速权

免费风扇控制软件FanControl怎么用?3步接管CPU、显卡与机箱风扇的调速权

免费风扇控制软件FanControl怎么用?3步接管CPU、显卡与机箱风扇的调速权 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/G…

2026/10/18 4:07:26 阅读更多 →
ST电机库学习记录——配置MC—WorkBench + CuBeMX配置MT6701磁位置传感器

ST电机库学习记录——配置MC—WorkBench + CuBeMX配置MT6701磁位置传感器

选择板卡和驱动电机(电机参数需要自行对照调节)配置一览为了方便测试配置开环调试 串口波特率选择115200配置CuBeMX配置spi读取mt6701配置MISO和CLK配置FOC_L_CS引脚配置LED灯与电机控制引脚(个人配置)Keil5代码移植mian.c/.h中//…

2026/10/18 4:07:34 阅读更多 →

最新新闻

随机密码生成器Docker化部署实战:Python Flask与secrets模块

随机密码生成器Docker化部署实战:Python Flask与secrets模块

随机密码生成器这种东西,说实话实现起来并没什么高深算法,但真正到了要部署、要稳定跑起来、要让团队成员顺手用的时候,坑还挺多。最近我把一套随机密码生成器做了Docker化部署,作为内部小工具挂在服务器上,整个过程走…

2026/10/19 5:21:18 阅读更多 →
Spark音乐推荐系统设计与实现:标签画像+ALS混合推荐

Spark音乐推荐系统设计与实现:标签画像+ALS混合推荐

最近被问到最多的一个项目,就是代号 J001S 的“基于 Spark 的音乐推荐系统设计与实现”。这题目一看就是典型的毕业设计/课程设计,但说实话,能把这个题目做出彩的人并不多。核心玩法其实很清晰:歌曲标签加用户画像,再叠…

2026/10/19 5:21:18 阅读更多 →
具身智能的拜师礼:从数据采集到机器人学徒的产业叩问

具身智能的拜师礼:从数据采集到机器人学徒的产业叩问

活动还没开始,场外的自由讨论区就已经吵成了一片。有人围着一条机械臂反复看末端夹爪的开合精度,有人对着投影上的遥操作界面讨论延迟数字,还有人干脆蹲在角落里,拿着笔记本飞速记着什么。我当时站在人群里,听到最频繁…

2026/10/19 5:21:18 阅读更多 →
Kafka生产环境部署与配置避坑指南

Kafka生产环境部署与配置避坑指南

1. 这不是“装个软件”那么简单:Kafka部署背后的真实战场你点开一篇叫《Kafka 的安装、管理和配置》的教程,心里想的可能是:“哦,下载、解压、改几个配置、启动服务——十分钟搞定”。我试过无数次,也带过不少刚接触消…

2026/10/19 5:21:18 阅读更多 →
千元机生态之争:畅享90 Pro Max开售背后的鸿蒙下沉逻辑

千元机生态之争:畅享90 Pro Max开售背后的鸿蒙下沉逻辑

千元档手机市场这几年其实很微妙。过去大家拼的是“跑分高不高、像素大不大、电池够不够”,但最近风向明显变了,越来越多的新机开始把“系统生态”“跨端互联”“全家桶体验”当成核心卖点。畅享90 Pro Max正式开售的消息之所以引发关注,不只…

2026/10/19 5:21:18 阅读更多 →
矩阵分解推荐系统实战:从协同过滤到SGD梯度下降原理与实现

矩阵分解推荐系统实战:从协同过滤到SGD梯度下降原理与实现

如果把推荐系统相关的经典论文排个"被引用最多、被误读也最多"的榜单,这篇《Matrix Factorization Techniques for Recommender Systems》绝对能进前三。我第一次读它的时候刚被各种协同过滤公式折磨完,看完第一反应是:就这么简单&…

2026/10/19 5:20:17 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* 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 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →