STM32低功耗设计实战:从原理到代码实现,打造长续航嵌入式系统
1. 项目缘起为什么STM32的低功耗设计是个“技术活”几年前我接手一个户外环境监测终端的项目设备靠电池供电要求续航至少一年。当时选型了STM32心想这还不简单官方手册里低功耗模式写得明明白白调个函数让MCU睡觉不就完了结果第一批样机发出去不到三个月电池就耗尽了。拆机排查发现MCU虽然“睡”了但外围电路还在偷偷“吃电”几个GPIO口配置不当产生了微安级的漏电流日积月累电量就这么溜走了。那次教训让我深刻认识到基于STM32实现真正的低功耗远不是调用一个HAL_PWR_EnterSleepMode()那么简单它是一个涉及硬件选型、电源电路设计、外设管理、时钟配置和软件逻辑协同的“系统工程”。今天我们就来彻底拆解这个“系统工程”。我将结合那个失败项目以及后续多个成功产品的经验从原理到实践手把手带你实现STM32的低功耗设计。无论你是正在做智能穿戴、物联网传感器节点还是任何电池供电的设备这篇文章都能帮你避开我当年踩过的坑设计出真正“能睡会省”的嵌入式系统。我们会聚焦于最常用的STM32系列特别是像STM32L4这类低功耗家族但核心思路适用于所有型号。2. 低功耗的底层逻辑能量都去哪儿了在动手写代码之前我们必须先搞清楚STM32在运行时电能究竟消耗在哪些地方。只有理解了“敌人在哪”才能有的放矢地进行节能。对于一个典型的STM32系统功耗主要由以下几部分构成2.1 动态功耗与频率和电压的平方成正比这是MCU内核逻辑电路翻转时产生的功耗。计算公式可以简化为P_dynamic C * V^2 * f。其中C是负载电容由芯片工艺和设计决定我们无法改变。V是核心电压。f是系统时钟频率。这里有一个关键洞察功耗与电压的平方成正比与频率成正比。这意味着降低运行电压和主频对省电的效果是立竿见影的。这就是为什么STM32提供了多种可调的电源模式和可大幅分频的系统时钟。在任务不繁忙时主动降频降压是首要的节能手段。2.2 静态功耗无处不在的“背景电流”即使MCU内核停止运行时钟关闭由于晶体管本身的特性仍然存在微小的漏电流。这部分功耗就是静态功耗。它主要受以下因素影响工艺制程更先进的制程如40nm, 28nm通常静态功耗更低。STM32L系列就是专为低静态功耗优化的。工作温度温度越高半导体漏电流越大静态功耗呈指数级上升。高温环境对续航是致命的。IO引脚状态这是最容易被忽略的“电老虎”。如果一个GPIO引脚被配置为浮空输入且外部信号电平处于不确定状态既不是高电平VDD也不是低电平GND引脚内部可能会产生一个中间电压导致上下两个MOS管都处于微导通状态产生可观的漏电流可能达到微安级。确保所有未使用的GPIO配置为模拟输入或推挽输出固定电平是降低静态功耗的关键步骤。2.3 外设功耗被忽略的“耗电大户”很多人只关注MCU本身却忘了外设。一个全速运行的ADC、一个开启着的串口、一个周期触发的定时器它们的功耗可能比处于睡眠模式的内核还要高。因此低功耗设计的黄金法则之一是不用即关。在进入低功耗模式前必须手动关闭所有不必要的外设时钟。2.4 电源管理单元功耗模式的“总开关”STM32内部有一个复杂的电源管理单元它负责产生不同的电源域如Vcore域、备份域和控制各种低功耗模式的进入与退出。理解这些模式是进行软件设计的基础。3. STM32的低功耗模式详解从“打盹”到“深度昏迷”STM32提供了多种低功耗模式我们可以把它们想象成人的不同睡眠深度睡眠越深唤醒越难但越省电。3.1 睡眠模式CPU的“午间小憩”进入方式内核停止执行指令Cortex-M内核进入Sleep或DeepSleep状态但所有时钟SYSCLK, HCLK, PCLK1/2仍然运行所有外设保持工作状态。唤醒方式任何中断或事件均可唤醒。唤醒后程序从中断处继续执行几乎没有延迟。功耗表现功耗降低主要来自于CPU停止工作但SRAM和寄存器数据保持外设仍在耗电。省电效果有限适用于需要快速响应、频繁唤醒的场景。代码示例// 进入睡眠模式通过WFI指令 __WFI(); // 等待中断 // 或者使用HAL库 HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);3.2 停止模式系统的“深度睡眠”进入方式关闭所有时钟HIS, HSE, PLL等1.2V域核心电压的时钟停止但SRAM和寄存器内容保留。部分特定外设如RTC、独立看门狗IWDG、某些低功耗定时器LPTIM如果配置了独立时钟源如LSI, LSE可以继续工作。唤醒方式只能是特定的外部中断EXTI、RTC闹钟、低功耗定时器中断等。唤醒后系统会进行时钟重启程序从复位向量或中断服务程序开始执行取决于配置有毫秒级的延迟。功耗表现功耗大幅降低通常可降至微安级别。是平衡功耗和唤醒速度的常用模式。关键配置在进入停止模式前必须根据唤醒源配置好对应的GPIO和EXTI并确保其时钟在低功耗模式下可用例如使用外部低速晶振LSE为RTC和EXTI提供时钟。代码示例// 配置唤醒引脚例如PA0 GPIO_InitTypeDef GPIO_InitStruct {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin GPIO_PIN_0; GPIO_InitStruct.Mode GPIO_MODE_INPUT; GPIO_InitStruct.Pull GPIO_PULLUP; // 根据外部电路选择上拉或下拉避免浮空 HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 配置EXTI线0 HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); // 进入停止模式保持主调压器开启以获得最快唤醒 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); // 唤醒后系统时钟会重置为HSI需要重新配置系统时钟 SystemClock_Config();3.3 待机模式MCU的“关机”进入方式这是最省电的模式。关闭1.2V核心电源域整个芯片除了备份域由VBAT供电包含RTC和备份寄存器和唤醒逻辑外全部掉电。SRAM和寄存器内容全部丢失。唤醒方式NRST引脚复位、RTC闹钟、WKUP引脚上升沿、独立看门狗复位。唤醒后相当于一次硬件复位程序从头开始执行。功耗表现功耗最低可达到亚微安级。适用于需要极长待机且唤醒后可以从头初始化的场景。重要提示进入待机模式前必须处理好所有数据因为唤醒后就是一次全新的启动。代码示例// 使能WKUP引脚例如PA0唤醒功能 HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); // 对应PA0 // 清除之前的唤醒标志可选但建议做 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); // 进入待机模式 HAL_PWR_EnterSTANDBYMode(); // 执行此函数后MCU将进入待机后续代码不会执行。 // 被唤醒后程序从main()函数开始执行。注意对于STM32L4等系列停止模式还细分为Stop 0,Stop 1,Stop 2等子模式它们在关闭的时钟域和保留的外设功能上有更精细的划分功耗也略有差异。选择时需要仔细查阅对应型号的参考手册。4. 低功耗设计实战从硬件到软件的完整清单理论讲完了现在进入实战环节。我将按照一个产品的开发流程列出实现低功耗必须检查的清单。4.1 硬件设计阶段的“防漏”检查硬件是基础硬件设计不当软件再怎么优化也无济于事。MCU选型优先选择STM32L系列低功耗系列。对比数据手册中的运行模式、睡眠模式、停止模式、待机模式下的典型电流值。电源电路LDO选择选用低静态电流的LDO。很多通用LDO自身的静态电流就有几十微安比MCU在停止模式下的电流还大。电源路径管理如果设备有多个电源如电池和USB需要使用MOSFET或专用电源路径管理芯片确保在USB供电时完全断开电池防止电池通过内部二极管漏电。去耦电容必不可少确保电源稳定减少噪声但容量选择要合理过大的电容在电源开关时会产生更大的浪涌电流。外围电路上拉/下拉电阻连接到MCU引脚的外围器件如I2C的EEPROM、按键等必须根据其常态配置明确的上拉或下拉电阻确保MCU引脚在输入模式下有确定的电平避免浮空。电平转换如果外围器件的工作电压与MCU不同电平转换电路在关断时不能有漏电路径。传感器电源控制对于功耗较大的传感器如GPS、4G模块一定要用MCU的GPIO通过MOSFET或三极管控制其电源通断做到彻底断电而不是仅仅让其进入睡眠。4.2 软件初始化与配置的“节流”策略软件是控制硬件的灵魂正确的初始化是低功耗的前提。时钟树配置在满足性能的前提下使用尽可能低的系统时钟频率。关闭所有不用的外设时钟__HAL_RCC_XXX_CLK_DISABLE()。CubeMX生成的代码默认开启了很多外设时钟需要仔细清理。在进入低功耗模式前考虑将系统时钟源切换到HSI内部低速RC振荡器并关闭HSE外部高速晶振和PLL因为它们本身也消耗电流。GPIO配置这是重中之重在系统初始化最后进入主循环前遍历所有未使用的GPIO引脚将其设置为模拟输入模式。这是功耗最低的状态。// 示例将所有GPIOA未使用的引脚设为模拟输入 GPIO_InitTypeDef GPIO_InitStruct {0}; GPIO_InitStruct.Pin GPIO_PIN_All; // 所有引脚 GPIO_InitStruct.Mode GPIO_MODE_ANALOG; GPIO_InitStruct.Pull GPIO_NOPULL; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 重复此操作 for GPIOB, GPIOC... 注意保留你实际使用的引脚对于使用的引脚输出引脚在进入低功耗前设置为推挽输出并输出一个明确的电平高或低避免端口悬空。输入引脚必须使能内部上拉或下拉电阻绝不允许浮空输入。外设管理在每次使用完外设如ADC采样结束、串口发送完成后立即将其禁用并关闭其时钟。使用DMA传输数据可以让CPU更早进入睡眠但要注意DMA传输完成中断要及时处理并关闭DMA与外设。4.3 应用逻辑与低功耗模式的“协同”编程这是软件架构层面的设计决定了设备大部分时间处于何种状态。事件驱动架构摒弃传统的while(1)轮询改为中断驱动。主循环的大部分时间应该是这样的int main(void) { // 1. 系统初始化时钟、GPIO、外设 System_Init(); // 2. 配置唤醒源RTC闹钟、EXTI等 Wakeup_Source_Config(); while (1) { // 3. 执行一次任务采集数据、处理、发送 Do_One_Shot_Work(); // 4. 清理现场关闭所有用过的外设时钟和功能 Peripheral_Deinit_Before_Sleep(); // 5. 配置GPIO状态确保无浮空 GPIO_Config_For_LowPower(); // 6. 进入最深的、符合唤醒时间要求的低功耗模式 Enter_LowPower_Mode(); // 可能是Stop或Standby // 7. 被唤醒后首先恢复系统时钟如果是Stop模式 SystemClock_ReConfig(); // 8. 重新初始化需要用的外设 Peripheral_Reinit_After_Wakeup(); // 然后循环回到第3步 } }RTC的妙用RTC是低功耗系统的“心脏”。你可以用它产生周期性的闹钟中断比如每秒一次、每分钟一次让设备从停止模式定时唤醒完成数据采集和上传然后继续睡眠。这是物联网传感器节点的典型工作模式。数据保存与恢复如果从停止模式唤醒后程序不是从头运行你需要保存关键状态变量到备份寄存器由VBAT供电待机模式下数据不丢失或者Flash中。5. 调试、测量与验证用数据说话低功耗设计不能凭感觉必须依靠精确测量。测量工具高精度万用表测量静态电流微安级必备。需要串联在电池和系统电源之间。电流探头示波器观察动态电流波形可以看到唤醒、工作、睡眠各个阶段的电流变化和持续时间是优化功耗周期的利器。测量方法断开所有调试器ST-Link等它们通常会通过VCC引脚向目标板供电干扰测量。给系统供电一个干净的电源如电池或实验室电源串联万用表。让系统完整运行几个工作周期记录平均电流。平均电流 工作电流 * 工作时间 睡眠电流 * 睡眠时间 / 总周期时间。软件验证使用__HAL_RCC_GET_FLAG()函数检查时钟状态确认进入低功耗模式后该关闭的时钟确实关了。在GPIO配置后可以读取GPIOx-MODER寄存器确认引脚模式是否按预期设置成了模拟输入。6. 进阶技巧与常见陷阱调试接口的功耗SWDJTAG引脚在默认状态下是功能引脚如果外部没有上拉可能会浮空。在最终产品中如果不需要调试可以将这些引脚PA13, PA14, PB3, PB4等也配置为模拟输入。内部稳压器模式STM32的调压器有主模式MR和低功耗模式LPR。在运行模式下使用MR在停止模式下可以切换到LPR以进一步省电但唤醒时间会稍有增加。需要根据唤醒速度要求权衡。Flash存储器的功耗在进入停止模式前可以设置Flash进入低功耗模式。但要注意唤醒后访问Flash前可能需要等待其恢复。“幽灵”唤醒有时设备会莫名唤醒。检查所有中断标志是否在进入低功耗前被清除检查所有配置为唤醒源的引脚是否有外部干扰如按键抖动、噪声。可以在唤醒后打印或记录唤醒源标志帮助定位问题。VBAT引脚的处理如果不用RTC和备份寄存器必须将VBAT引脚连接到VDD不能悬空。7. 一个完整的示例基于STM32L4的定时数据采集器假设我们有一个STM32L476的项目需要每分钟唤醒一次采集传感器数据并通过串口发送然后继续睡眠。核心代码框架如下// main.c 精简示例 #include main.h #include stdio.h // 用于调试打印 RTC_HandleTypeDef hrtc; UART_HandleTypeDef huart2; void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART2_UART_Init(void); static void MX_RTC_Init(void); static void Enter_StopMode(void); static void Exit_StopMode(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); MX_RTC_Init(); // 配置RTC在1分钟后唤醒 HAL_RTCEx_SetWakeUpTimer_IT(hrtc, 4096, RTC_WAKEUPCLOCK_RTCCLK_DIV16); // 假设LSI32kHz 4096 * (16/32000) ≈ 60秒 printf(System Started.\r\n); while (1) { // 1. 执行任务采集并发送数据 printf(Wake up! Collecting data...\r\n); // ... 模拟传感器读取和数据处理 ... printf(Data sent. Going to sleep.\r\n); // 2. 进入低功耗前关闭外设时钟 HAL_UART_DeInit(huart2); __HAL_RCC_USART2_CLK_DISABLE(); // 3. 配置所有GPIO为低功耗状态关键 // 这里需要根据你的实际硬件将未使用的引脚设为模拟输入使用的引脚设为确定状态。 GPIO_Config_For_LowPower(); // 4. 进入停止模式 Enter_StopMode(); // 5. 被RTC唤醒后首先恢复时钟和外设 Exit_StopMode(); SystemClock_Config(); // 重新配置系统时钟HSE, PLL MX_USART2_UART_Init(); // 重新初始化串口 // GPIO状态在Exit_StopMode中已恢复 // 6. 设置下一次RTC唤醒 HAL_RTCEx_SetWakeUpTimer_IT(hrtc, 4096, RTC_WAKEUPCLOCK_RTCCLK_DIV16); } } static void Enter_StopMode(void) { // 关闭主调压器使用低功耗调压器进一步省电 HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE2); // 进入Stop 1模式STM32L4系列 HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); } static void Exit_StopMode(void) { // 唤醒后系统时钟是MSI默认需要重新使能HSE和PLL // 函数 SystemClock_Config() 会做这件事 // 恢复GPIO时钟因为Stop模式下GPIO时钟被关闭了 __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); // ... 其他GPIO端口 // 重新配置你使用到的GPIO引脚功能 // MX_GPIO_Init(); // 或者只重新初始化部分引脚 } // RTC唤醒中断服务函数 void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc) { // 这个回调函数在从Stop模式被RTC唤醒后在Exit_StopMode()之前被调用 // 可以在这里设置一个标志位但注意此时系统时钟还未恢复不能做复杂操作 }这个框架清晰地展示了“工作-睡眠”的循环。在实际项目中你需要根据具体的外设和唤醒源来填充GPIO_Config_For_LowPower、Peripheral_Deinit/Reinit等函数。低功耗设计是一个需要耐心和细致的工作它要求开发者对硬件和软件都有深入的理解。最好的学习方式就是动手实践用万用表测量每一个优化步骤带来的电流变化你会对“省电”这两个字有全新的认识。从我最初那个失败的项目到现在我经手的电池供电设备续航都达到了客户要求秘诀无他就是把上面这些点一个一个检查、落实。希望这份详细的指南能帮你少走弯路。

相关新闻

C++ cout格式化全解析:从流操纵符到实战表格输出

C++ cout格式化全解析:从流操纵符到实战表格输出

1. 项目概述:为什么我们需要深入掌握cout格式化?在C的日常开发中,std::cout是我们最熟悉的老朋友。从写下第一个“Hello, World!”开始,它就伴随着我们。然而,很多开发者,包括一些有经验的程序员&#xff0…

2026/10/2 5:39:14 阅读更多 →
Node.js 全栈独立产品 2026 下半年技术路线规划

Node.js 全栈独立产品 2026 下半年技术路线规划

Node.js 全栈独立产品 2026 下半年技术路线规划 一、独立产品的全栈悖论:什么都要做,什么都不够深 独立产品的全栈开发有一个结构性矛盾:你需要同时掌握前端、后端、数据库、部署和运维,但每一样都没有大厂团队那样的深度积累。…

2026/9/24 5:34:03 阅读更多 →
英雄联盟Akari助手:5分钟学会的智能游戏效率工具

英雄联盟Akari助手:5分钟学会的智能游戏效率工具

英雄联盟Akari助手:5分钟学会的智能游戏效率工具 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中繁琐的符文配置、…

2026/9/29 5:54:16 阅读更多 →

最新新闻

TerraScan点云处理实战:参数原理与LiDAR测绘精度控制

TerraScan点云处理实战:参数原理与LiDAR测绘精度控制

简介:本资源是一份面向测绘、遥感、地理信息系统(GIS)及三维建模领域从业者与高校相关专业师生的技术参考文献,系统讲解基于TerraScan软件的LiDAR点云数据处理全流程。内容涵盖LiDAR技术原理与发展现状、TerraScan核心功能&#x…

2026/10/2 22:51:07 阅读更多 →
HGRV轨迹预测:贝叶斯粒子滤波建模与Python实现

HGRV轨迹预测:贝叶斯粒子滤波建模与Python实现

简介:这是一份关于高超声速滑翔飞行器(HGRV)轨迹预测的完整复现资料,面向具备一定编程和数学基础、对贝叶斯推断与粒子滤波感兴趣的科研人员和工程师。资源以docx文档形式整理了论文复现思路与详细代码解释,覆盖意图代…

2026/10/2 22:51:07 阅读更多 →
LabVIEW数据存储指南:TDMS文件读写方案与性能优化

LabVIEW数据存储指南:TDMS文件读写方案与性能优化

先说结论:这套存储读写方案我在实验室里用了快四年,从单通道几十Hz的慢速采集,到八通道连续一周的疲劳试验,再到偶尔要回放分析的老数据,基本都覆盖到了。如果你正在用LabVIEW做数据采集、信号处理或者设备状态记录&am…

2026/10/2 22:51:07 阅读更多 →
URLLC短码长通信:突破香农极限的实时可靠传输

URLLC短码长通信:突破香农极限的实时可靠传输

1. 什么是URLLC场景下的短码长 regime?——从工厂产线到远程手术的真实需求倒逼出来的通信范式你有没有想过,为什么5G宣传里总说“一毫秒时延”,但实际用手机打视频电话,卡顿还是时有发生?问题不在基站功率&#xff0c…

2026/10/2 22:51:07 阅读更多 →
AI写作合规指南:守住作者性的技术边界

AI写作合规指南:守住作者性的技术边界

1. 事件本质与行业震动:一场关于“作者性”的边界测试 “Author Dropped from Literary Prize over AI Allegations”——这行标题不是一则娱乐八卦,而是一记敲在当代文学创作神经末梢上的重锤。它背后没有算法黑箱的神秘感,也没有技术厂商的…

2026/10/2 22:51:07 阅读更多 →
蛋白质功能位点识别平台构建:从数据到部署的机器学习全流程

蛋白质功能位点识别平台构建:从数据到部署的机器学习全流程

简介:这份PDF文献面向生物信息学、蛋白质功能研究方向的初学者与科研人员,系统讲解如何用支持向量机(SVM)构建蛋白质功能位点识别的通用机器学习平台。内容涵盖非同源序列提取、序列特征编码(基本信息、物化特征、结构…

2026/10/2 22:50:06 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/2 10:36:31 阅读更多 →
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/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练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/2 6:09:11 阅读更多 →