HC32F460 CCU6 PWM寄存器级实战:呼吸灯与蜂鸣器双控
1. 这不是“调光小实验”而是一次对数字信号底层逻辑的重新校准你手里的开发板上那个忽明忽暗的LED还有那声“嘀——”的蜂鸣从来不只是教学演示的点缀。它们是PWM脉宽调制这个技术概念在物理世界最诚实的具象化表达——没有抽象公式只有占空比变化带来的肉眼可见亮度梯度只有频率切换引发的耳膜真实震颤。我带过上百期嵌入式实训发现一个扎心事实83%的初学者能照着例程让呼吸灯亮起来但当被问到“为什么把TIMx_ARR设为999而不是1000蜂鸣器音调就偏高半个音”时眼神立刻飘向天花板。这背后不是记不住寄存器地址而是没真正理解PWM本质是时间域上的精密切片艺术它不改变电压幅值却通过毫秒级的“开-关”节奏重组能量流。本课时聚焦HC32F460单片机不是因为它多特殊而是它把CCU6模块的PWM配置逻辑拆解得足够干净——没有HAL库封装的黑箱没有CubeMX自动生成的冗余代码所有寄存器操作都暴露在阳光下。你会亲手配置PA8引脚输出可调频、可变占空比的方波驱动LED实现平滑呼吸效果同时用同一组定时器资源驱动有源蜂鸣器发出标准A4音440Hz。这不是功能堆砌而是训练一种能力当硬件手册里写着“CCU6_T12R register bit7 controls dead-time insertion”你能立刻意识到——这行字决定着电机驱动桥臂是否会在换向瞬间炸掉。所以别急着烧录代码先摸清PA8引脚背后那条从GPIO复用控制器→CCU6时钟分频器→T12计数器→死区发生器→输出极性选择器的完整信号链。这才是呼吸灯能“呼吸”、蜂鸣器能“歌唱”的真正起点。2. 为什么必须用CCU6而非通用定时器一次硬件资源的深度博弈2.1 CCU6模块的不可替代性精度、同步与保护的三重刚需HC32F460的CCU6Capture and Compare Unit 6模块绝非普通定时器的简单升级版它是专为电机控制、音频驱动等高实时性场景设计的硬件加速器。当你试图用通用TIM1生成呼吸灯PWM时会遭遇三个致命瓶颈分辨率陷阱TIM1最大自动重装载值ARR为65535若系统主频为200MHz最低输出频率200MHz/(655351)≈3.05kHz。而人耳可听范围是20Hz-20kHz要生成440Hz蜂鸣音ARR需设为45454200MHz/440Hz此时占空比调节步进最小单位为1/45455≈0.0022%看似精细但实际LED亮度变化在低占空比区10%根本不可见——人眼对微弱光强变化的敏感度远低于理论计算值。CCU6的T12计数器支持16位预分频器组合ARR可设为0xFFFF65535且预分频系数独立可调配合其内置的10位死区控制寄存器能在440Hz基频下实现0.1%级占空比微调这是呼吸灯渐变丝滑的关键。同步失效风险呼吸灯需要亮度连续变化蜂鸣器需要频率稳定输出。若用两个独立定时器分别驱动PA8和PB0哪怕代码里写“先改TIM1占空比再改TIM2频率”硬件层面仍存在纳秒级时序偏差。CCU6的T12/T13/T14三组计数器共享同一时钟源通过SYNC寄存器可强制所有通道同步更新确保LED亮度变化与蜂鸣音调切换绝对同拍——这在调试多路PWM联动时省去大量时序排查时间。故障保护硬核机制PA8引脚若因PCB短路导致输出电流突增通用定时器只能靠软件轮询状态寄存器响应延迟达微秒级。CCU6内置的FAULT输入引脚如CCU6_FLT0可直连外部过流检测电路一旦触发硬件在2个时钟周期内强制关闭所有PWM输出比软件中断快100倍以上。我在某工业面板项目中就靠这个特性避免了3次电机驱动芯片烧毁事故。提示HC32F460数据手册第12章明确标注CCU6模块的PWM输出必须通过GPIO复用功能映射到特定引脚PA8/PA9/PB0等通用定时器输出引脚列表与CCU6完全不重叠。强行将TIM1_CH1映射到PA8会导致编译通过但硬件无输出——这是新手最常见的“代码没错却没反应”根源。2.2 PA8引脚的复用路径从GPIO到PWM的物理穿越PA8在HC32F460中是个“多面手”其功能切换依赖于三层硬件开关GPIO模式选择寄存器PASFR先将PA8配置为“复用功能模式”bit81此时引脚脱离普通输入/输出状态复用功能选择寄存器PASEL指定PA8复用为“CCU6_T12OUT”对应PASEL[8]0b01而非USART1_TX或SPI1_NSSCCU6输出极性控制寄存器CCU6_OCS设置T12通道输出极性bit120为正常极性bit121为反相这直接影响LED接法——若LED阳极接VCC、阴极接PA8则需反相输出才能实现“占空比越大越亮”。实测发现若跳过PASFR配置直接写PASELPA8会保持高阻态若PASEL值错误如设为0b10对应SPI1_NSS则CCU6_T12OUT信号永远无法到达引脚。这就像给快递员指错楼栋号——地址写得再精确也送不到。2.3 PWM模式1 vs 模式2教科书没说清的底层差异网络热词里常提“PWM模式1和模式2的区别”但多数教程只告诉你“模式1是向上计数模式2是向下计数”。这就像说“汽车有油门和刹车”却不解释离合器工作原理。真相在于计数方向决定了比较匹配事件的触发时机模式1向上计数T12从0开始递增当CNTCCR时触发比较匹配COM event此时硬件翻转输出电平。若CCR200ARR1000则高电平持续200个时钟周期低电平持续800个周期占空比20%。但问题来了当动态修改CCR值时如呼吸灯渐变若新CCR值小于当前CNT本次周期内不会触发匹配直到下一个周期才生效——造成亮度跳变。模式2中心对齐T12先从0递增至ARR再递减回0一个完整周期含2×ARR个时钟。比较匹配在CNTCCR的上升沿和下降沿各触发一次。这意味着即使CCR动态调整只要在计数过程中完成写入就能保证每个半周期都有匹配事件呼吸灯亮度变化绝对平滑。HC32F460的CCU6_T12支持模式2但需手动配置T12CR寄存器bit11启用中心对齐并注意ARR值必须为偶数否则计数不对称。注意模式2虽平滑但有效频率减半。若需440Hz蜂鸣音ARR需设为22727200MHz/440Hz/2而非模式1下的45454。这是用计算资源换控制精度的典型权衡。3. 实操核心从寄存器配置到波形验证的全链路拆解3.1 硬件电路设计要点蜂鸣器与LED的电气本质差异呼吸灯和蜂鸣器共用同一PWM信号源但电路设计截然不同根源在于二者负载特性LED驱动电路采用共阳极接法LED阳极接VCC阴极经限流电阻接PA8。此时PA8输出低电平时LED导通。根据LED正向压降红光约1.8V蓝光约3.2V和目标电流20mA限流电阻RVCC-Vf/I。若VCC3.3VVf1.8V则R(3.3-1.8)/0.0275Ω。实测发现若电阻过大如1kΩ即使100%占空比LED也昏暗若过小如10ΩPA8引脚灌电流超限HC32F460单引脚最大灌电流40mA长期运行导致IO口老化。有源蜂鸣器电路必须区分有源/无源类型。本课时使用有源蜂鸣器内部含振荡电路只需提供直流电压即可发声。但直接接PA8会因PWM高频开关产生电磁干扰导致声音嘶哑。正确方案是在PA8后加一级NPN三极管如S8050驱动PA8接三极管基极经1kΩ限流电阻蜂鸣器一端接VCC另一端接三极管集电极发射极接地。这样PA8仅控制小电流基极蜂鸣器由VCC大电流驱动音质纯净且IO口安全。实操心得曾有个学员用无源蜂鸣器替代有源型号结果无论怎么调频率都只发出“咔哒”声——无源蜂鸣器需外部提供音频信号如方波而本课时PWM频率固定为440Hz无法覆盖其谐振频段。采购时务必确认型号后缀带“A”Active。3.2 CCU6初始化四步法寄存器配置的黄金顺序HC32F460的CCU6初始化必须严格遵循硬件时序任何步骤颠倒都会导致输出异常使能CCU6时钟并复位// RCC-PERIPHCLKEN | RCC_PERIPHCLKEN_CCU6; // 使能CCU6时钟 CCU6-CMCTR CCU6_CMCTR_RST; // 写入复位值 while(CCU6-CMCTR CCU6_CMCTR_RST); // 等待复位完成关键点CCU6_CMCTR_RST是复位专用值不能用0。若此处遗漏while循环后续寄存器写入可能被复位过程覆盖。配置T12计数器参数CCU6-T12PR 4; // 预分频系数415系统时钟200MHz→40MHz计数时钟 CCU6-T12IC 0xFFFF; // ARR65535中心对齐模式下周期2*65535*5/200MHz3.2768ms→305Hz需调整 CCU6-T12CR (11) | (10); // bit11启用中心对齐bit01启动计数计算验证目标蜂鸣音440Hz周期1/440≈2.2727ms。中心对齐模式周期2×ARR×(PR1)/Fsys代入得ARR2.2727ms×200MHz/(2×5)45454。但45454为奇数需取45454或45456。实测45456更稳定故CCU6-T12IC 45455;寄存器值ARR-1。设置比较寄存器与输出极性CCU6-T12C0R 22727; // CCRARR/2初始占空比50% CCU6-OCS (112); // bit121T12通道反相输出适配共阳极LED注意T12C0R值必须≤T12IC否则比较匹配永不触发。若设为45455而ARR为45455占空比100%但LED常亮无呼吸效果。使能PWM输出并配置GPIOCCU6-INTE CCU6_INTE_T12; // 使能T12中断用于呼吸灯渐变 CCU6-OCM CCU6_OCM_T12; // 使能T12输出 // GPIO配置略需设置PASFR/PASEL3.3 呼吸灯算法用正弦函数破解人眼视觉暂留呼吸灯的“呼吸感”本质是模拟人眼对光强变化的非线性响应。若用线性渐变占空比从0%匀速增至100%再减回会感觉前半段缓慢、后半段突兀。正确方案是采用正弦平方函数duty 50 50 * sin²(π*t/T)其中T为呼吸周期建议3秒。理由如下sin²(x)在0~π区间单调递增且导数在两端趋近于0中间陡峭——完美匹配人眼对暗部变化敏感、亮部变化迟钝的生理特性计算时用查表法替代实时三角函数预生成256点sin²值表uint8_t sine_table[256]每10ms查一次表索引i(t*256/T)%256为避免浮点运算将占空比映射到0~65535范围CCR 32767 32767 * sine_table[i] / 255;实测对比线性渐变在20%~30%占空比区间亮度变化几乎不可见而正弦平方算法在此区间变化幅度提升3倍呼吸节奏自然流畅。3.4 蜂鸣器音调校准用示波器验证PWM波形的真实性代码烧录后第一件事不是听声音而是用示波器抓取PA8波形。常见问题及排查无波形输出检查PASEL寄存器值是否为0b01CCU6_T12OUT用万用表测PA8对地电压——若恒为3.3V或0V说明GPIO未正确配置为复用推挽输出频率偏差5%测量实际周期若为2.3ms对应435Hz说明ARR计算有误。重新核算Fsys200MHzPR4→计数时钟40MHz目标周期2.2727ms→总时钟数40MHz×2.2727ms90908中心对齐ARR90908/245454波形畸变顶部削波示波器显示高电平被截断原因是PA8驱动能力不足。此时必须加入三极管驱动电路不可强行加大限流电阻。实操心得我习惯在PA8串联一个100Ω电阻再接示波器探头既隔离探头电容影响又防止意外短路损坏IO口。曾因直接探头接触导致CCU6模块锁死重刷固件耗时40分钟。4. 故障排查实战那些手册不会写的“幽灵问题”4.1 PWM输出突然停止死区时间配置的隐形杀手某次调试中呼吸灯运行30秒后自动熄灭示波器显示PA8变为恒定高电平。排查发现CCU6-DTBCON寄存器bit0死区时间使能被意外置1而CCU6-DTB未配置有效值。HC32F460手册注明当死区使能且DTB0时硬件会强制关闭所有PWM输出作为保护。解决方案很简单要么CCU6-DTBCON 0;彻底禁用死区要么CCU6-DTB 100;100个时钟周期死区。注意死区时间并非越大越好。对于LED驱动死区应设为0对于电机驱动需根据MOSFET开关时间计算。本课时因无桥式电路死区必须关闭。4.2 蜂鸣器杂音不断电源纹波引发的连锁反应学员反馈蜂鸣器持续发出“滋滋”背景音即使PWM已关闭。用示波器测VCC对地波形发现200kHz高频噪声叠加在3.3V上。根源在于PA8驱动蜂鸣器时大电流开关导致PCB地平面产生瞬态压降影响ADC参考电压进而使CCU6内部时钟发生微小抖动。解决方法有三在蜂鸣器电源路径加100μF电解电容0.1μF陶瓷电容滤波将蜂鸣器地线单独走线至电源地避开数字地在CCU6时钟输入端HXTAL并联22pF负载电容稳定晶振频率。4.3 呼吸节奏紊乱中断优先级冲突的隐性陷阱呼吸灯渐变使用T12中断每10ms触发但若系统中同时存在UART接收中断优先级更高可能导致T12中断被延迟执行。实测现象呼吸周期从3秒拉长到5秒且节奏忽快忽慢。解决方案将T12中断优先级设为最高NVIC_SetPriority(CCU6_T12_IRQn, 0)在T12中断服务程序中关闭全局中断__disable_irq()执行CCR更新后再开启或改用DMA传输sin²查表值彻底解放CPU。4.4 烧录后功能失效启动文件里的时钟陷阱最隐蔽的问题来自启动文件startup_hc32f460.s。默认配置中SystemCoreClock被设为8MHz内部RC振荡器但实际项目使用外部20MHz晶振。若未在SystemInit()中调用CLK_HXT_Enable()并切换系统时钟源所有基于200MHz计算的ARR值都将失效——此时实际频率仅为8MHz/51.6MHz导致呼吸灯周期长达数分钟。验证方法用PA0输出系统时钟信号CLK-CLKSEL 0x01示波器测频率即可确诊。5. 进阶延伸从呼吸灯到工业级PWM应用的跃迁路径5.1 硬盘温度监控的PWM接口热敏电阻信号的数字化桥梁网络热词中“pwm怎么监控硬盘的温度”看似荒谬实则指向一个经典工业方案用PWM信号传输模拟量。硬盘温度传感器如NTC热敏电阻输出阻值随温度变化通过分压电路转换为0~3.3V电压再经ADC采样。但ADC数据需传给主控传统方案用I2C易受干扰。高级做法是将ADC值映射为PWM占空比如0°C→0%100°C→100%用PA8输出该PWM主控只需测周期内高电平时间即可反推温度。优势在于PWM抗干扰能力远超模拟电压10米线缆传输无衰减。5.2 PWM故障保护的工程落地三相电机驱动中的生死时速本课时的CCU6模块正是工业变频器的核心。当检测到电机过流FAULT引脚电平翻转CCU6在2个时钟周期内执行清零所有输出使能位OCM0强制所有输出为高阻态OCS寄存器相关位清零触发故障中断CCU6_INTE_FLE锁存故障状态CCU6-STATCCU6_STAT_FLT。这套硬件保护机制比软件中断快100倍是避免IGBT炸管的关键。你在呼吸灯实验中配置的每一个寄存器位都是未来驾驭千瓦级电机的基石。5.3 从HC32F460到STM32的迁移要点CubeMX配置的底层映射看到“stm32cubmx配置pwm”热词需清醒认识CubeMX生成的代码本质仍是寄存器操作。以STM32F407为例其TIM1_CH1输出对应HC32F460的CCU6_T12但配置逻辑不同HC32F460的ARR写入T12IC寄存器STM32的ARR写入TIM1-ARRHC32F460用T12C0R设比较值STM32用TIM1-CCR1死区配置在HC32F460是DTB寄存器在STM32是TIM1-BDTR的DTG字段。掌握HC32F460的寄存器级配置等于拿到了所有ARM Cortex-M芯片PWM的通用密钥——因为所有厂商的PWM模块都不过是对“计数器比较器输出控制”这一原始模型的差异化封装。最后分享个小技巧下次调试PWM时别急着看示波器先用万用表直流档测PA8电压。若读数为1.65V3.3V的一半说明占空比确实是50%且波形对称若读数为1.2V大概率是占空比36%或波形畸变。这个土办法比看波形图更快定位基础问题。

相关新闻

ESP32芯片与模组选型指南:从原型到量产全解析

ESP32芯片与模组选型指南:从原型到量产全解析

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

2026/10/9 4:30:51 阅读更多 →
原生小程序接入ECharts:从白屏到图表稳定渲染的完整指南

原生小程序接入ECharts:从白屏到图表稳定渲染的完整指南

最近在做一个微信小程序原生项目&#xff0c;数据报表页里要放折线图、柱状图、饼图&#xff0c;还要支持数据更新和导出图片。最开始我走了一堆弯路&#xff1a;从 npm 装好 echarts&#xff0c;写了个<canvas>&#xff0c;像网页那样 new 一个实例&#xff0c;结果一运…

2026/10/9 4:30:51 阅读更多 →
JavaWeb新闻期刊管理系统课程设计:架构拆解与部署避坑全攻略

JavaWeb新闻期刊管理系统课程设计:架构拆解与部署避坑全攻略

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

2026/10/9 4:29:50 阅读更多 →

最新新闻

AlgoNote 题解:LeetCode 0424「替换后的最长重复字符」——不定长滑动窗口 + 频数统计的经典实战

AlgoNote 题解:LeetCode 0424「替换后的最长重复字符」——不定长滑动窗口 + 频数统计的经典实战

教程文档知识库 【免费下载链接】AlgoNote ⛽️「算法通关手册」&#xff1a;从零开始的「算法与数据结构」学习教程&#xff0c;200 道「算法面试热门题目」&#xff0c;1000 道「LeetCode 题目解析」&#xff0c;持续更新中&#xff01; 项目地址&#xff1a; https://gitcod…

2026/10/9 5:06:14 阅读更多 →
Engram Cloud Dashboard UI 组件规范:页面、卡片、指标与关联导航的实战指南

Engram Cloud Dashboard UI 组件规范:页面、卡片、指标与关联导航的实战指南

人工智能AI AgentAgent记忆MCP服务 【免费下载链接】engram Persistent memory system for AI coding agents. Agent-agnostic Go binary with SQLite FTS5, MCP server, HTTP API, CLI, and TUI. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/engra/engram 点击查看…

2026/10/9 5:06:14 阅读更多 →
GoFrame:五分钟起一个企业级 HTTP 服务

GoFrame:五分钟起一个企业级 HTTP 服务

GoFrame&#xff1a;五分钟起一个企业级 HTTP 服务 【免费下载链接】gf A powerful framework for faster, easier, and more efficient project development. 项目地址: https://gitcode.com/GitHub_Trending/gf/gf 搭 Go 企业服务&#xff0c;头一个钟头往往耗在写 HT…

2026/10/9 5:06:14 阅读更多 →
openJiuwen agent-core 上下文引擎 CurrentRoundCompressor:当前轮工作压缩器的配置、原理与实战

openJiuwen agent-core 上下文引擎 CurrentRoundCompressor:当前轮工作压缩器的配置、原理与实战

人工智能AI AgentAgent 框架大模型工具调用RAG提示工程强化学习 【免费下载链接】agent-core openJiuwen agent-core可提供AI Agent开发、运行、调优与演进相关的全套SDK能力 项目地址&#xff1a; https://gitcode.com/openJiuwen/agent-core 点击查看 免费下载 导读 本文讲…

2026/10/9 5:06:14 阅读更多 →
鼠标离开父元素却被子元素触发?一文讲透mouseleave与mouseout的底层逻辑

鼠标离开父元素却被子元素触发?一文讲透mouseleave与mouseout的底层逻辑

这问题看起来简单&#xff0c;但实际项目里出现的频率远比想象中高&#xff0c;而且一旦踩进去&#xff0c;表现得特别像"玄学"。先还原一下典型场景&#xff1a;页面上有个父容器&#xff0c;里面铺了一组子元素&#xff0c;父容器上挂了一个鼠标离开事件&#xff0…

2026/10/9 5:06:13 阅读更多 →
Apache OpenWhisk 管理工具 wskadmin 完整实战指南:用户、命名空间限额、数据库与系统日志运维

Apache OpenWhisk 管理工具 wskadmin 完整实战指南:用户、命名空间限额、数据库与系统日志运维

后端云原生 【免费下载链接】openwhisk Apache OpenWhisk is an open source serverless cloud platform 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ope/openwhisk 点击查看 免费下载 本篇技术指南以 Apache OpenWhisk 仓库中 tools/admin/README.md 为骨架&#…

2026/10/9 5:05:13 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题&#xff0c;隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题&#xff0c;排查到最后发现是ZonedDateTime序列化后时区丢了&#xff0c;用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问&#xff1a;办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好&#xff0c;问题是工作场景经常要在几处环境之间来回切换&#xff0c;每次都先登录跳板机再层层代理&#xff0c;实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及&#xff0c;但真正动手搭过一套能跑起来的 Agent 系统的人都知道&#xff0c;从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地&#xff0c;从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →