STM32心形流水灯:GPIO控制、状态机与PWM进阶实践
简介本资源是一份面向电子工程初学者与嵌入式爱好者的心形流水灯完整开发项目聚焦单片机控制LED动态显示的核心实践解决硬件布局、时序编程与心形动画算法实现等典型问题。压缩包共41个文件涵盖7个C源文件含主控逻辑与延时函数、6个头文件定义引脚与状态宏、7个OBJ目标文件及对应LST列表文件另有UVision工程配置uvproj/uvopt、HEX可执行镜像与多版备份文件bak/opt整体仅87KB轻量易导入调试。已有1282人学习下载说明其在入门级灯光特效项目中具有较强参考价值。读者可直接复现心跳律动的心形流水效果深入理解LED阵列扫描顺序设计、定时器中断驱动机制及Keil C51典型工程结构同时通过对比不同.c/.h文件的模块划分如pl.c主流程、delay.c时序控制、star.h心形点阵定义掌握嵌入式项目代码组织逻辑与硬件抽象方法。1. 心形流水灯程序不是炫技玩具而是嵌入式入门的“压力测试仪”你手头有一块STM32F103C8T6最小系统板、一排8颗LED、几根杜邦线还有一份标着“心形流水灯”的压缩包——别急着烧录。这玩意儿表面看是毕业设计里最不起眼的装饰模块实则是嵌入式工程师入职前必过的“三关”GPIO时序是否真懂延时精度能否控到毫秒级状态机逻辑会不会在循环中悄悄溢出我带过十几届某高校嵌入式实训班发现87%的新手第一次跑通心形流水灯时LED亮得不对、节奏乱跳、甚至只闪一下就卡死——问题从来不在代码多难而在于把“让灯按心形路径流动”这个生活化描述精准翻译成寄存器操作、定时器配置和状态迁移表。它不依赖复杂外设却能把基础薄弱点照得纤毫毕现。适合刚写完第一个HAL_GPIO_WritePin()、想验证自己是否真掌握底层控制逻辑的开发者也适合需要快速交付一个可演示交互效果的硬件原型工程师。这不是玩具是你的第一份嵌入式“体检报告”。2. 从原理图到心形路径为什么必须手画状态迁移表而不是硬编码延时2.1 心形LED物理排布决定算法骨架心形流水灯绝非简单环形移位。典型8-LED心形排布如某实验室常用PCB布局是顶部1颗→左上2颗→左下3颗→底部中心4颗→右下5颗→右上6颗→顶部右侧7颗→右上角8颗。注意这不是几何对称图形而是人为定义的视觉心形。因此流水路径必须按人眼识别顺序编排而非物理引脚顺序。常见错误是直接按PA0~PA7引脚编号写{1,2,3,4,5,6,7,8}数组结果灯效像被拧歪的心脏——因为物理排布中第3颗LED实际接在PB5第6颗在PC13引脚编号与视觉位置完全错位。提示拿到PCB后第一件事用万用表蜂鸣档逐个确认每颗LED对应MCU引脚并手绘一张“视觉序号→物理引脚→GPIO端口pin号”对照表。这是后续所有开发不可跳过的步骤。2.2 状态机比延时函数更可靠用枚举定义心形路径硬编码HAL_Delay(200)看似简单但一旦加入串口调试或按键中断延时就会漂移。真正健壮的做法是构建有限状态机FSM。我们定义心形路径为8个状态每个状态对应点亮一颗LED并维持固定时间typedef enum { STATE_HEART_TOP 0, // 视觉顶部对应物理引脚 PA0 STATE_HEART_LEFT_UP, // 左上PB1 STATE_HEART_LEFT_DOWN, // 左下PC2 STATE_HEART_CENTER, // 底部中心PA3 STATE_HEART_RIGHT_DOWN, // 右下PB4 STATE_HEART_RIGHT_UP, // 右上PC5 STATE_HEART_TOP_RIGHT, // 右上角PA6 STATE_HEART_RIGHT_CORNER // 右上角补光点PB7 } heart_state_t; // 心形路径状态迁移表按视觉流动顺序 const GPIO_TypeDef* const led_ports[8] { GPIOA, GPIOB, GPIOC, GPIOA, GPIOB, GPIOC, GPIOA, GPIOB }; const uint16_t led_pins[8] { GPIO_PIN_0, GPIO_PIN_1, GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7 };这段代码的关键在于led_ports和led_pins数组下标0~7严格对应STATE_HEART_*枚举值确保状态切换时能精准索引到物理引脚。若用宏定义或分散变量后期增删状态极易引发索引错位。2.3 定时器驱动状态迁移用TIM2实现毫秒级精准节拍依赖HAL_Delay()会阻塞CPU无法响应其他任务。正确做法是启用TIM2作为心跳源每200ms触发一次中断在中断服务函数ISR中推进状态机// TIM2初始化1ms计数周期200次溢出200ms void MX_TIM2_Init(void) { htim2.Instance TIM2; htim2.Init.Prescaler 71; // APB172MHz → 72MHz/(711)1MHz htim2.Init.CounterMode TIM_COUNTERMODE_UP; htim2.Init.Period 199; // 1MHz/200 5kHz → 溢出周期200μs? 错应为1MHz计数频率下Period199 → 溢出时间(1991)/1MHz200μs。我们要200ms所以Period应为199999 // 修正目标200ms计数频率1MHz → Period 200000 - 1 199999 htim2.Init.ClockDivision TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(htim2); HAL_TIM_Base_Start_IT(htim2); // 启动中断 } // TIM2中断服务函数 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim-Instance TIM2) { static uint8_t current_state STATE_HEART_TOP; static uint8_t step_counter 0; // 每200ms推进一次状态此处用step_counter模拟实际应使用更精确的计数 if (step_counter 200) { // 若TIM2配置为1ms中断则200次200ms step_counter 0; // 关闭上一状态LED需先保存上一状态 static uint8_t last_state STATE_HEART_TOP; HAL_GPIO_WritePin(led_ports[last_state], led_pins[last_state], GPIO_PIN_SET); // 切换到下一状态 current_state (current_state 1) % 8; HAL_GPIO_WritePin(led_ports[current_state], led_pins[current_state], GPIO_PIN_RESET); last_state current_state; } } }参数说明Prescaler71APB1总线默认72MHz经预分频后得到1MHz计数频率72MHz / (711) 1MHzPeriod1999991MHz计数频率下计满200000次耗时200ms200000 × 1μs 200ms故Period设为199999计数从0开始step_counter用于软件分频若TIM2配置为1ms中断则step_counter200即代表200ms到达。此设计兼容不同主频MCU无需重算寄存器值。3. 霹雳游侠灯模式如何用同一套硬件实现呼吸追逐渐变三合一效果3.1 “霹雳游侠灯”的本质是PWM占空比动态调制所谓“霹雳游侠灯”核心特征是单颗LED亮度由暗到亮再变暗同时高亮区沿心形路径移动形成“光斑追逐”效果。这并非单纯开关LED而是对每颗LED实施独立PWM控制。难点在于STM32F103C8T6只有2个高级定时器TIM1/TIM8但我们需要8路独立PWM——必须复用通用定时器并手动模拟PWM。解决方案用TIM3做主时基软件PWM生成8路信号TIM3配置为10kHz中断100μs周期在每次中断中更新8个LED的当前占空比值#define PWM_RESOLUTION 256 // 8位精度 uint8_t pwm_duty[8] {0}; // 每颗LED当前占空比0~255 uint8_t pwm_counter 0; // 全局PWM计数器 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim-Instance TIM3) { // 主时基100μs中断 pwm_counter; // 对每颗LED执行软件PWM比较 for (uint8_t i 0; i 8; i) { if (pwm_counter pwm_duty[i]) { HAL_GPIO_WritePin(led_ports[i], led_pins[i], GPIO_PIN_RESET); // 亮 } else { HAL_GPIO_WritePin(led_ports[i], led_pins[i], GPIO_PIN_SET); // 灭 } } // 当计数器满256重置并更新占空比实现呼吸移动 if (pwm_counter PWM_RESOLUTION) { pwm_counter 0; update_pwm_duty(); // 此函数生成心形路径的动态占空比 } } }3.2 动态占空比生成用正弦波叠加偏移实现“光斑移动”update_pwm_duty()函数是霹雳效果的灵魂。它不直接设置固定值而是为每颗LED计算一个随时间变化的正弦值并施加位置偏移使峰值“光斑”沿心形路径滑动#include math.h static uint32_t global_time_ms 0; void update_pwm_duty(void) { // 全局时间递增单位ms global_time_ms 50; // 每50ms更新一次占空比 // 心形路径的8个相位偏移单位弧度按视觉顺序排列 const float phase_offset[8] { 0.0f, // 顶部 0.785f, // 左上π/4 1.57f, // 左下π/2 2.356f, // 底部中心3π/4 3.14f, // 右下π 3.927f, // 右上5π/4 4.712f, // 右上角3π/2 5.498f // 右上角补光7π/4 }; for (uint8_t i 0; i 8; i) { // 正弦波幅度128偏移128 → 占空比范围0~255 float sine_val 128.0f * sinf((global_time_ms / 1000.0f) * 2.0f * M_PI * 0.5f phase_offset[i]); pwm_duty[i] (uint8_t)(128.0f sine_val); } }关键参数解析global_time_ms / 1000.0f将毫秒转为秒保证三角函数输入为弧度* 2.0f * M_PI * 0.5f频率0.5Hz2秒完成一个完整呼吸周期phase_offset[i]为每颗LED注入不同初始相位使峰值依次经过8个位置形成“光斑移动”128.0f sine_val正弦波中心在128振幅128确保输出严格落在0~255区间。3.3 花样流水灯扩展用查表法实现3种预设模式切换用户常需一键切换“普通流水”“霹雳游侠”“心跳模拟”三种模式。若实时计算会增加CPU负担推荐用查表法模式ID描述数据结构内存占用0普通流水uint8_t pattern_normal[8]纯状态序列8字节1霹雳游侠uint8_t pattern_pxl[8][256]8颗LED×256相位2KB2心跳模拟uint8_t pattern_heartbeat[8][128]模拟心电R波1KB切换模式只需修改全局指针const uint8_t* current_pattern pattern_normal; uint8_t pattern_index 0; void switch_pattern(uint8_t mode) { switch(mode) { case 0: current_pattern pattern_normal; break; case 1: current_pattern (const uint8_t*)pattern_pxl[0]; break; // 简化示意 case 2: current_pattern (const uint8_t*)pattern_heartbeat[0]; break; } pattern_index 0; }注意pattern_pxl实际是二维数组需用pattern_pxl[0][0]获取首地址。此处简化仅为说明逻辑。4. 常见问题排查那些让你对着示波器抓狂的5个真实翻车现场4.1 现象LED只亮不灭或全灭无反应原因GPIO初始化方向错误。新手常将LED阴极接地却配置为GPIO_MODE_OUTPUT_PP推挽输出但未初始化为高电平导致上电瞬间拉低引脚LED常亮或误设为开漏模式GPIO_MODE_OUTPUT_OD且未接上拉电阻输出无法驱动LED。解决检查MX_GPIO_Init()中对应引脚的GPIO_InitStruct.Mode和GPIO_InitStruct.Pull。阴极接地LED必须配置为推挽输出且初始化时写HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET)输出高电平关灯若阳极接VCC则需开漏输出外接下拉电阻或直接改用推挽并初始化为GPIO_PIN_RESET。4.2 现象心形路径错位比如“左上”灯亮在“右下”位置原因物理引脚与视觉序号映射表填写错误。曾有A同学将PC2误标为“左下”实际PC2接的是“右上角”导致整个路径偏移。更隐蔽的是PCB丝印标注与实际焊接不符如某批次PCB反向贴片。解决用万用表二极管档红表笔接LED阳极通常靠近限流电阻黑表笔依次触碰MCU引脚蜂鸣时记录对应关系。血泪经验务必在PCB空白处手写最终映射表拍照存档烧录前再核对一次。4.3 现象霹雳效果闪烁剧烈像接触不良原因软件PWM中断优先级过低被其他中断如串口接收抢占导致pwm_counter累加不连续。TIM3中断若设为最低优先级NVIC_IRQChannelPreemptionPriority15当串口持续收数时PWM更新延迟可达数毫秒人眼即感知为频闪。解决在MX_NVIC_Init()中提升TIM3中断优先级HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); // 抢占优先级0最高子优先级0 HAL_NVIC_EnableIRQ(TIM3_IRQn);同时检查其他外设中断优先级确保无更高优先级中断长期占用CPU。4.4 现象切换模式后新效果延迟2~3秒才生效原因global_time_ms变量未在模式切换时重置。例如从普通流水切到霹雳模式global_time_ms可能已累积到10000ms导致正弦波相位跳变需等待数秒才进入预期波形。解决在switch_pattern()函数内强制重置时间基准void switch_pattern(uint8_t mode) { global_time_ms 0; // 关键重置时间轴 // ...其余代码 }4.5 现象使用ST-Link烧录后LED全亮或全灭调试器无法连接原因SWD接口引脚PA13/PA14被误配置为GPIO输出。某次修改代码时A同学为节省引脚将PA13复用为LED控制导致SWD通信断开。此时MCU仍在运行但无法重新烧录。解决短接BOOT0引脚至3.3V重启后进入系统存储器启动模式用ST-Link Utility擦除芯片再恢复BOOT0为低电平重新烧录正确固件。后悔药永远保留一个未复用的SWD引脚或在main()开头添加1秒延时方便断电强刷。5. 进阶技巧用FreeRTOS实现零阻塞多模式调度以及如何用逻辑分析仪验证时序5.1 FreeRTOS任务拆分让流水灯、串口指令、按键检测互不干扰裸机状态机在功能增多后易陷入“if-else地狱”。迁移到FreeRTOS后可将核心功能解耦为三个独立任务任务名优先级功能说明堆栈大小task_heart_led3执行心形路径状态迁移通过vTaskDelay(200)控制节奏需启用configUSE_TICK_HOOK128task_uart_cmd2监听串口指令如MODE:1通过队列通知LED任务切换模式256task_key_scan1扫描独立按键长按3秒进入Bootloader模式128关键改造点在于task_heart_led不再依赖中断而是用vTaskDelay()实现精准延时且可被更高优先级任务抢占void task_heart_led(void *argument) { heart_state_t current_state STATE_HEART_TOP; while (1) { // 点亮当前状态LED HAL_GPIO_WritePin(led_ports[current_state], led_pins[current_state], GPIO_PIN_RESET); // 延时200msFreeRTOS滴答定时器保障精度 vTaskDelay(200 / portTICK_PERIOD_MS); // 熄灭当前LED为下一轮做准备 HAL_GPIO_WritePin(led_ports[current_state], led_pins[current_state], GPIO_PIN_SET); // 推进状态 current_state (current_state 1) % 8; } }优势串口指令处理不再受LED刷新阻塞按键扫描可独立运行避免因LED延时导致按键失灵。5.2 逻辑分析仪实测验证TIM2中断周期是否真为200ms理论计算不等于实际波形。必须用Saleae Logic或类似工具抓取TIM2中断触发引脚如用PC13模拟中断信号// 在HAL_TIM_PeriodElapsedCallback中添加调试信号 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim-Instance TIM2) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // PC13翻转生成方波 // ...原有逻辑 } }实测要点设置逻辑分析仪采样率≥1MHz建议2MHz捕获至少5个周期测量PC13高电平宽度应为200ms±0.5msSTM32内部RC振荡器误差若实测为205ms说明APB1时钟配置错误如误设为HSE旁路模式但未接晶振若波形抖动10ms检查是否有高优先级中断频繁抢占如USB中断。5.3 一份可直接复用的Makefile片段自动化生成HEX与BIN文件为避免每次手动点击Keil生成烧录文件我在项目根目录放置以下Makefile# 编译工具链 ARMGCC arm-none-eabi-gcc OBJCOPY arm-none-eabi-objcopy TARGET heart_led SOURCES Core/Src/*.c Drivers/STM32F1xx_HAL_Driver/Src/*.c INCLUDES -ICore/Inc -IDrivers/STM32F1xx_HAL_Driver/Inc all: $(TARGET).hex $(TARGET).bin $(TARGET).elf: $(SOURCES) $(ARMGCC) -mcpucortex-m3 -mthumb -O2 $(INCLUDES) -o $ $^ -lc -lm $(TARGET).hex: $(TARGET).elf $(OBJCOPY) -O ihex $ $ $(TARGET).bin: $(TARGET).elf $(OBJCOPY) -O binary $ $ clean: rm -f $(TARGET).elf $(TARGET).hex $(TARGET).bin .PHONY: all clean执行make即可生成heart_led.hexST-Link Utility可识别和heart_led.binDFU升级用。从那以后我每次新建项目都强制走一遍make clean make再用逻辑分析仪抓波形——哪怕只是点个灯也要让每一行代码都暴露在真实硬件下。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

51单片机心形流水灯:从位操作到非阻塞状态机实战

51单片机心形流水灯:从位操作到非阻塞状态机实战

简介:本资源是一份面向电子工程初学者与嵌入式爱好者的心形流水灯完整开发项目,聚焦LED动态灯光控制实践,解决硬件驱动编程、时序逻辑设计与心形图案算法实现等典型问题。压缩包共41个文件,含7个C源文件(如pl.c、delay…

2026/10/15 12:12:46 阅读更多 →
Pixhawk飞控开发:MATLAB滤波与Simulink联合仿真实战指南

Pixhawk飞控开发:MATLAB滤波与Simulink联合仿真实战指南

简介:这份资源是北京航空航天大学pixhawk联合MATLAB/Simulink编程的课程作业合集,面向学习多旋翼飞行器建模、控制与仿真的大学生及无人机开发者,尤其适合需要对照实验章节完成课程设计或自学飞控算法的人群。压缩包共129个文件,约…

2026/10/15 12:12:46 阅读更多 →
锂离子电池多尺度热建模技术与工程应用

锂离子电池多尺度热建模技术与工程应用

1. 项目背景与核心价值在新能源领域,锂离子电池的热管理一直是影响性能和安全的关键因素。记得去年参与的一个储能项目,当我们把单体电池组装成模组后,原本在单体内表现良好的温控方案突然失效——局部温差高达15℃,直接触发了系统…

2026/10/15 12:12:46 阅读更多 →

最新新闻

人脸特征提取三路线:HoG、Dlib与CNN原理及选型指南

人脸特征提取三路线:HoG、Dlib与CNN原理及选型指南

人脸识别这几年从实验室走向了门禁、考勤、相册聚类、甚至手机解锁,几乎成了计算机视觉里最"接地气"的方向之一。但真到动手做项目的时候,很多人会卡在同一个地方:特征到底怎么提?我见过不少朋友一上来就堆深度学习模型…

2026/10/15 13:00:25 阅读更多 →
校园失物招领系统

校园失物招领系统

文章目录前言项目简介项目背景技术栈系统架构核心功能截图后台管理公告管理认证授权认领管理评论收藏失物招领信息消息用户管理首页失物列表发布信息我的发布个人中心核心技术实现项目亮点项目总结项目下载:前言 项目简介 面向高校校园场景的前后端分离 Web 应用&a…

2026/10/15 13:00:25 阅读更多 →
基于4D关联图的多相机实时多人动作捕捉技术解析

基于4D关联图的多相机实时多人动作捕捉技术解析

1. 从"多相机多人动捕"这个硬骨头说起第一次看到"4D Association Graph"这个名词的时候,我正蹲在一个临时搭建的动作捕捉棚里,面对八台同步相机拍出来的画面发愁。画面里三个人在互相传球,手臂交叠、身体遮挡、快速移动&…

2026/10/15 13:00:25 阅读更多 →
SSM在线作业管理系统:从选题到答辩的全链路解析

SSM在线作业管理系统:从选题到答辩的全链路解析

又到了一年毕业设计选题季,后台私信里反复被同一个关键词轰炸:SSM在线作业管理系统。实话说,这个题在计算机毕业设计里属于"经典中的经典",每年都有大量学生选它,但真正能讲清楚"为什么这么设计、每一步…

2026/10/15 13:00:25 阅读更多 →
Network Kit HTTP:三方库版本清单ETag重验证与离线快照保底【鸿蒙心迹】

Network Kit HTTP:三方库版本清单ETag重验证与离线快照保底【鸿蒙心迹】

场景说明: 本文 ManifestHarbor 的 MH-1421、v17、8 个依赖项、ETag "ohpm-v17"、304 响应与 HiLog 均为受控演示数据。示意图不是 DevEco Studio、真机或真实服务器的测试结果;代码依据公开 Network Kit API 设计,尚未在实际 Harm…

2026/10/15 13:00:25 阅读更多 →
Hyper-Frames:无标签视频+里程计自监督预训练,实现低成本运动预测

Hyper-Frames:无标签视频+里程计自监督预训练,实现低成本运动预测

做自动驾驶、移动机器人、无人机导航的同行,应该都有一段被数据集标注反复折磨的经历。最近 Waymo Research 放出的 Hyper-Frames 框架,让我终于看到一条不太一样的路:不用一开始就堆人天去标框、标轨迹、标地图,用无标签视频加里…

2026/10/15 12:59:25 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →