STM32F407工程模板搭建指南:从启动文件到时钟配置的完整实践
简介STM32F407工程模板是针对ARM Cortex-M4内核微控制器的预配置开发环境面向嵌入式开发者、电子竞赛学生及工业控制、物联网项目工程师旨在简化基于STM32F407的项目初始化与调试流程。模板基于Keil/uVision等IDE集成了HAL库、启动文件、链接脚本、调试器设置及外设示例代码覆盖GPIO、串口、定时器、ADC、DMA等常用功能可让使用者跳过繁琐的环境配置直接聚焦核心业务逻辑实现。资源包共204文件以C源文件、头文件、编译生成的目标文件及链接映射文件为主另含工程配置文件uvproj、uvopt与烧录文件hex等压缩包仅1.12MB结构紧凑适合快速部署。已有817人在CSDN学习或下载。通过该模板开发者可直观理解STM32F407的工程组织方式并基于示例快速验证外设驱动适合作为项目起步的基础框架。1. STM32F407工程模板芯片到手后真正耗时间的不是业务代码一块 STM32F407 板子到手最常见的时间杀手不是调业务逻辑而是搭工程启动文件选错、时钟树拉不到 168MHz、下载器连不上目标芯片任何一个环节都能卡住半天。STM32F407工程模板要解决的就是这类重复劳动把芯片相关的启动文件、链接脚本、时钟配置、调试通道全部固定成一个可复用的骨架让新工程的第一版固件在半小时内点亮 LED而不是把时间花在和链接脚本搏斗上。这篇文章沿「模板怎么拆解、怎么生成、怎么避坑、怎么演进」的顺序展开适合第一次接触 F407 的开发者也适合手头有不同核心板、想统一工程结构的熟手。2. 模板的底座芯片资源边界与两套固件库的选型账2.1 芯片本身的硬性参数决定了模板的边界模板本质上是约束设计第一条约束来自芯片本身。STM32F407 使用 Cortex-M4F 内核最高主频 168MHz片上 Flash 和 SRAM 在不同封装下有不小差异但整体资源在同类里相当充裕。这些数字不是手册里的装饰它们直接决定模板里放哪个启动文件、链接脚本里 Flash 和 RAM 填多少、编译器要不要开硬件浮点。我见过不少人把小容量 F407 强行套用大容量型号的链接脚本程序能编译也能下载跑一段时间就莫名死机最后定位到是链接器把数据排到了不存在的 Flash 区域。这类问题在模板阶段就可以根治只要把资源参数集中写在链接脚本和配置头文件里。资源地址起点常见容量在模板里的角色Flash0x080000001MB部分型号 512KB存放代码与只读常量SRAM0x20000000192KB部分型号 128KB运行时数据、栈、堆FPU内核内建单精度硬件浮点需要编译选项配合才会生效选 F407 做模板基准还有一个原因它往上兼容同一系列里绝大多数外设框架以后换更大资源的新芯片模板要改的只是链接脚本和启动文件业务代码几乎不动。反过来如果模板建在 F103 那种 M3 内核上SRAM 规划、浮点策略、时钟树结构完全不同换到 F4 时等于推倒重来。2.2 HAL 库还是标准外设库这笔账要算在模板之前F407 这颗芯片活了很多年两套固件库都有大量资料。模板选哪套决定了后面所有人写代码的方式这个决策不能拍脑袋。对比维度HAL 库标准外设库初始化方式结构体配外设句柄直接面向寄存器配置学习曲线上层易写底层封装偏厚代码直白但一切裸奔配套工具支持图形化初始化生成基本没有新项目适配目前主流选择老项目维护为主我的默认选择是 HAL 库。理由有两个一是现在多数开发环境默认生成 HAL 工程团队协作时大家看到的是同一种初始化风格二是 HAL 的句柄和回调机制天然适合做模块抽象模板里的 BSP 层可以建得干净。标准外设库并不是不能用它逻辑更直白、中断响应更可控但新项目里从零维护一套状态机式的外设层成本远高于收益。模板的 Drivers 目录只放 HAL 库和 CMSIS 相关的通用文件升级库版本时整个目录替换User 层的代码不去依赖 HAL 内部细节。这样就算某天库版本大改模板的业务层也能保持稳定。3. 工程目录与启动链路模板的骨架怎么搭才不容易散3.1 四层目录结构把硬件依赖和业务代码彻底分开我一般把 F407 模板拆成四个目录从下到上依次是内核依赖、驱动库、用户代码、工程文件。目录分得清楚后面升级库、换芯片、多人协作时才不会互相踩脚。STM32F407_Template/ ├── Core/ │ ├── startup_stm32f407xx.s │ └── system_stm32f4xx.c ├── Drivers/ │ ├── CMSIS/ │ └── STM32F4xx_HAL_Driver/ ├── User/ │ ├── app/ │ ├── bsp/ │ └── main.c └── Project/ └── MDK-ARM/Core 目录放启动文件和系统初始化文件这一层基本不需要改但要读得懂。Drivers 是库文件所在升级时整目录替换。User 是用户真正写代码的地方按 app 和 bsp 细分app 放业务逻辑bsp 放板级驱动。Project 单独放 IDE 工程是因为图形化工具重新生成工程时经常重建工程目录User 和 Core 放在外面就不会被连带清掉。3.2 启动文件与向量表上电后到 main 之间发生了什么很多人把启动文件当成不可动的黑匣子其实它的核心就一张向量表加几段复位逻辑。CPU 上电后从 0x08000000 取出栈顶地址再取出复位向量跳到 Reset_Handler然后调用 SystemInit 做时钟和向量表准备最后进入 __main 完成 C 运行环境初始化这才到 main。; startup_stm32f407xx.s 关键片段 __Vectors DCD __initial_sp ; 栈顶地址由链接脚本提供 DCD Reset_Handler ; 复位处理函数 DCD NMI_Handler DCD HardFault_Handler ; 其余中断向量省略向量表看似只是地址列表一旦启动文件型号选错向量表后面的外设中断地址全部错位。程序正常跑着不报错但任何一个外设中断触发CPU 就会跳进 HardFault。常见的翻车就是把旧工程的启动文件直接复制进新模板原理就是向量表不对位。链接脚本里的内存布局是模板的另一条腿。F407 的 Flash 起点固定是 0x08000000RAM 起点固定是 0x20000000容量按实际芯片型号填/* 链接脚本核心段 */ FLASH (rx) : ORIGIN 0x08000000, LENGTH 1024K RAM (rwx) : ORIGIN 0x20000000, LENGTH 192K如果实际芯片是 512KB Flash 或 128KB RAM就必须把 LENGTH 改掉。编译器按错误容量排布地址轻则下载时 Flash 算法不匹配重则程序运行到高位地址直接访问到不存在的存储区。3.3 配置系统时钟168MHz 不是玄学是 PLL 的数学题F407 的系统时钟由 PLL 从外部晶体倍频而来。以下是一段典型的时钟配置代码模板里通常放在 SystemClock_Config 里供 main 开头调用void SystemClock_Config(void) { RCC_OscInitTypeDef Osc {0}; RCC_ClkInitTypeDef Clk {0}; Osc.OscillatorType RCC_OSCILLATORTYPE_HSE; Osc.HSEState RCC_HSE_ON; /* 启用外部晶体 */ Osc.PLL.PLLState RCC_PLL_ON; Osc.PLL.PLLSource RCC_PLLSOURCE_HSE; /* HSE 作为 PLL 输入 */ Osc.PLL.PLLM 8; /* 8MHz / 8 1MHz */ Osc.PLL.PLLN 168; /* 1MHz * 168 168MHz */ Osc.PLL.PLLP RCC_PLLP_DIV2; /* VCO 二分频得到SYSCLK */ Osc.PLL.PLLQ 4; /* 48MHz给USB使用 */ if (HAL_RCC_OscConfig(Osc) ! HAL_OK) { Error_Handler(); } Clk.ClockType RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; Clk.SYSCLKSource RCC_SYSCLKSOURCE_PLLCLK; Clk.AHBCLKDivider RCC_SYSCLK_DIV1; /* HCLK 168MHz */ Clk.APB1CLKDivider RCC_HCLK_DIV4; /* APB1 42MHz */ Clk.APB2CLKDivider RCC_HCLK_DIV2; /* APB2 84MHz */ if (HAL_RCC_ClockConfig(Clk, FLASH_LATENCY_5) ! HAL_OK) { Error_Handler(); } }PLL 的输入链路是HSE 晶体频率先除以 PLLM得到一个低频率的鉴相参考再乘以 PLLN得到 VCO 频率最后经 PLLP 分频输出 SYSCLK。按代码里的参数8MHz 除以 8 得 1MHz乘以 168 得 168MHz 的 VCO再除以 2 就是 168MHz 系统时钟。配置项结果说明PLLM1MHzPLL 输入参考频率PLLNVCO 168MHz倍频系数PLLPSYSCLK 168MHz主 PLL 输出分频AHB 分频HCLK 168MHz内核与存储器总线APB1 分频PCLK1 42MHzAPB1 外设时钟上限APB2 分频PCLK2 84MHzAPB2 外设时钟上限APB1 上限 42MHz 是硬限制直接把 168MHz 喂进去挂在 APB1 上的外设时序全乱。模板里这一组分频值基本是固定搭配除非外设有特殊时钟需求否则不建议改。4. 把模板跑起来图形化生成到下载调试的完整路径4.1 用图形化工具生成最小工程五个关键配置常见做法是先用图形化初始化工具生成一个最小工程再砍掉不需要的外设中间文件整理成模板。下面是五个关键步骤每一步都有明确的用途。新建工程芯片型号按实际板卡选例如 F407VET6 或 F407ZET6封装和容量以板子丝印为准。在系统调试配置里把 Debug 选成 Serial Wire这决定 SWD 引脚是否保留给调试器。在时钟配置里把 HSE 选成 Crystal/Ceramic Resonator启用外部晶体而不是默认的内部 HSI。打开时钟树图形界面输入外部晶体频率把系统时钟拖到 168MHz确认绿色状态无冲突。在工程管理器里选择生成独立的初始化文件并指定工程文件输出到 Project 目录。Debug 选项为什么必须选 Serial Wire因为选中后 PA13/PA14 被保留给调试器模板默认不开 JTAG。JTAG 占用引脚更多很多核心板根本没有把 JTAG 引脚引出来选不好直接导致调试器连不上。生成配置项推荐值作用DebugSerial Wire保留 SWD 引脚确保可烧录RCC 时钟源Crystal/Ceramic Resonator走外部晶体时钟精度更高工程结构外设独立模块生成后续增删外设互不影响模板里我一般还会保留一个空的 Error_Handler所有初始化函数的失败分支都汇聚到这里。调试阶段在里边打断点能直接暴露是哪个外设初始化失败比到处找返回错误码要高效。4.2 烧录与调试下载算法、调试器选型和最小验证模板跑起来的第一道关卡是下载算法。在 IDE 的烧录设置里Flash Download 要选对应 F4 系列的算法容量要和芯片实际 Flash 一致。下载失败时按这个顺序排查调试器是否被系统识别、SWD 接口电压是否正常、目标板供电是否独立、BOOT0 是否被拉高、Flash 算法是否选错。调试器方面我通常区分两种用法板载调试器适合日常开发接线少开箱即用独立 SWD 调试器适合自制板和多板卡场景需要自己接 SWDIO、SWCLK、GND 三根线。无论哪种模板里都要把 SWD 引脚默认保留不初始化为普通 GPIO这是烧录稳定的前提。调试方式适用场景注意事项板载调试器日常开发优先使用省去接线独立 SWD 调试器自制板、批量调试注意线长和供电模板烧录进去之后先别急着写业务做三个最小验证LED 能不能点亮、串口能不能输出一行版本信息、HAL_Delay 延时 500ms 是否和秒表一致。这三个验证全部通过说明 GPIO、UART、系统时钟三条基础设施都健康模板才算真正落到了这块板子上。5. F407 模板避坑排查五个高频问题的现象、原因、解决5.1 串口输出乱码外部晶体频率和宏定义对不上现象模板烧进板子串口助手收到的第一行字符串乱码而且波特率越高错得越离谱。原因配置头文件里把 HSE_VALUE 定义为 8MHz但板子上实际焊的是 25MHz 晶体。PLL 按 8MHz 计算实际参考频率却是 25MHz倍频结果完全偏掉串口波特率自然全错。这个坑几乎是每个用 F407 板子的人都会踩一遍跟串口助手没关系是时钟源头就偏了。解决打开 hal_conf 头文件把外部晶体频率改成实际值/* stm32f4xx_hal_conf.h */ #define HSE_VALUE ((uint32_t)25000000U) /* 按 PCB 上实际晶体修改 */改完重新编译烧录乱码即刻消失。注意图形化工具重新生成代码时这个宏有可能被覆盖模板里最好把它单独抽出来或者重新生成后手动回去检查一次。5.2 一进 main 就 HardFault启动文件与芯片型号不匹配现象程序能下载能在 main 入口打断点但只要任何一个外设中断触发程序直接跳进 HardFault_Handler。原因启动文件选错了型号家族典型场景是从旧工程里直接复制了一个启动文件过来。F4 的向量表和外设中断数量与老型号不同中断向量整体错位CPU 触发中断时取到的地址根本不是目标中断处理函数。解决回到模板的 Core 目录用对应型号的启动文件覆盖重新编译。验证方法是在 HardFault_Handler 里打断点检查触发前的 LR 寄存器和堆栈里的返回地址能定位到具体是哪个中断源。5.3 下载时报 Flash 算法不匹配链接脚本容量大于实际芯片现象点击下载按钮工具弹出 Flash 算法错误或者地址越界有时还会把芯片锁住。原因链接脚本里 Flash 写了 1024K实际板子上的芯片是 512KB 版本。编译出来的代码布局超出了芯片实际容量下载算法在擦除和写入时越界。解决把链接脚本里的 LENGTH 改成实际容量同时在烧录设置里选择对应的 Flash 算法。模板要做的不是强行兼容所有容量而是让容量差异在链接脚本和烧录设置里显眼可见换芯片时一眼就能看到要改哪里。/* 实际 512KB Flash 的写法 */ FLASH (rx) : ORIGIN 0x08000000, LENGTH 512K5.4 SWD 口被复用成 GPIO调试器再也连不上现象程序烧过一次之后调试器就报找不到目标芯片SWD 扫描不到任何设备。原因代码里把 PA13/PA14 初始化成了普通 GPIOSWD 调试口被用户功能占用调试器无法建立连接。更严重的情况是顺手开了 Flash 写保护连擦除都做不了。解决先断开调试器的连接把 BOOT0 拉高重新上电进入 ISP 模式通过串口执行全片擦除再拉低 BOOT0 恢复正常启动。如果嫌麻烦模板里就要立规矩SWD 引脚默认只用于调试任何复用必须通过宏开关切换调试版固件永远不打开这个宏。这个坑一旦踩到找回来的成本远大于一开始留引脚的成本。5.5 浮点运算慢得离谱FPU 没有在编译层面启用现象模板里跑同样的浮点运算比预期慢了一个数量级测延时函数也感觉系统反应迟钝。原因芯片有硬件单精度 FPU但编译选项里没开所有浮点运算被编译器降级成软浮点库函数。一条浮点加法在 M4 上一个指令就能完成软浮点模式下要拆成几十条整数指令性能差距被拉得非常大。解决在编译选项里加入 M4 的 FPU 指令集开关。使用 GCC 系工具链时配置如下# 编译选项示意 -mcpucortex-m4 -mfpufpv4-sp-d16 -mfloat-abihard使用图形化 IDE 时在浮点选项里选中单精度硬浮点即可。这个坑最大的迷惑点在于程序不报错、结果也正确只是慢很多人会先去优化算法最后才发现是编译器的锅。6. 进阶技巧把模板升级成个人基础设施6.1 用版本管理演进模板而不是复制文件夹模板不是一次性产物会跟着项目经验不断迭代。我习惯把模板当作一个独立仓库维护每次新板卡就从主干拉一个分支板卡差异收敛到 bsp 目录和硬件配置头文件里。底层 HAL 升级时在主干上改一次各个分支合并即可不用在每块板子的工程里重复劳动。6.2 用 BSP 层屏蔽 HAL业务代码不碰寄存器模板里预留 BSP 层的价值换一块板子就能体会到。以 LED 为例业务代码不直接调用 HAL 的 GPIO 写函数而是走 BSP 接口/* bsp_led.h */ typedef enum { LED_RED 0, LED_GREEN 1, LED_BLUE 2 } LedIndex; /* 每个板卡只需实现这三个函数业务层不感知引脚差异 */ void BSP_LED_Init(void); void BSP_LED_Set(LedIndex idx, uint8_t on); void BSP_LED_Toggle(LedIndex idx);换板卡时只改 BSP 实现文件业务代码一行不动。模板一开始就约定这层边界工程就不会写出散落在各处、改不动的底层调用。6.3 内建日志和断言模板自带调试能力我最后养成的习惯是在模板里预置一套轻量日志和断言宏。日志输出走串口断言失败时打印文件名和行号并进入死循环。这套东西在新工程的第一天就能用不需要每次重新发明。曾经有一段时间我为了贪快在一个工程树里堆了不同板卡的代码最后谁都不敢动那个文件后来把模板当作独立仓库维护每块板卡拉分支才算彻底解脱。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

SEMI S8 人机工程标准实战:从设计评审到合规避坑

SEMI S8 人机工程标准实战:从设计评审到合规避坑

简介:这份资源是面向半导体制造设备设计、运维及安全管理人员整理的SEMI标准资料,核心为SEMI S8-0308《半导体制造设备人体工程学安全指南》,适合需要了解设备安全规范、人体工程学设计原则与事故预防思路的工程师及安全合规人员参考。压缩包…

2026/10/15 13:38:09 阅读更多 →
模型开始吐结构:渲染契约、白名单与降级怎么写

模型开始吐结构:渲染契约、白名单与降级怎么写

说明:本文讨论的是模型直接产出可渲染结构(卡片、表单、图表、待办、操作按钮)之后,前端渲染层与模型之间的接口怎么定,属于 AI 前沿动态话题,不涉及具体模型版本与价格。AI 领域版本迭代极快,凡…

2026/10/15 13:37:09 阅读更多 →
废弃矿井改造抽水蓄能与锂电池混合储能系统优化设计

废弃矿井改造抽水蓄能与锂电池混合储能系统优化设计

1. 项目背景与核心价值风电、光伏等可再生能源的大规模并网给电力系统运行带来了新的挑战。由于风光发电具有显著的间歇性和波动性特性,单纯依赖传统火电进行调峰调频不仅效率低下,还会增加碳排放。这时候就需要引入储能系统作为"电力海绵"&am…

2026/10/15 13:37:09 阅读更多 →

最新新闻

AI Agent编排的声明式革命:从Kubernetes思想到YAML任务管理

AI Agent编排的声明式革命:从Kubernetes思想到YAML任务管理

1. 为什么我会盯着 AX 不放:Agent 量的激增带来编排空白先说个前几天的事儿。有位朋友找我帮他们团队看一套多 Agent 系统,代码里密密麻麻全是while True轮询任务状态、手写重试、手写超时控制、用全局字典存每个 Agent 的中间结果。功能是能跑&#xff…

2026/10/15 14:13:17 阅读更多 →
列车运行图自动生成系统:一张图背后的组合优化与落地路径

列车运行图自动生成系统:一张图背后的组合优化与落地路径

简介:面向C开发学习者和铁路信息化相关课程设计者,这份资源实现了一个基于MFC的列车运行图自动生成系统。系统将菜单栏与运行图显示相结合,支持维护列车时刻表、登记晚点信息,并依据时刻表动态绘制固定轴线与红蓝车次斜线&#xf…

2026/10/15 14:13:17 阅读更多 →
RCNN目标检测原理详解:从候选区域到CNN特征提取的完整技术解析

RCNN目标检测原理详解:从候选区域到CNN特征提取的完整技术解析

1. 这篇论文到底解决了什么问题RCNN(Region-based CNN,区域卷积神经网络)是目标检测领域绕不开的一座里程碑。在它出现之前,主流的目标检测方法还停留在手工特征时代,代表方案是DPM(Deformable Part Model&…

2026/10/15 14:13:17 阅读更多 →
.NET应用自适应SQLite 32位/64位/ARM64架构方案

.NET应用自适应SQLite 32位/64位/ARM64架构方案

1. 项目概述:为什么SQLite在.NET里会“挑系统”? “让使用SQLite的.NET应用自适应32位/64位系统”——这句话听起来像一句技术口号,但背后藏着大量.NET开发者踩过的真实坑。我从2012年开始做桌面端数据采集工具,最早用的是.NET F…

2026/10/15 14:13:17 阅读更多 →
贪心算法的数学归纳法证明实测:大模型在区间调度问题最优子结构推导中的表现

贪心算法的数学归纳法证明实测:大模型在区间调度问题最优子结构推导中的表现

很多学弟学妹在刷 LeetCode 时常有一种错觉:贪心算法是所有算法里最简单的,无非就是排个序、写个循环、抓着眼前的最大值或最小值往里塞。但只要参加过大厂后端核心架构岗的终面,或者打过 ICPC 竞赛就知道,面试官如果让你写贪心&a…

2026/10/15 14:13:17 阅读更多 →
MATLAB间断有限元声波模拟:可调试可验证的DG-FEM实现

MATLAB间断有限元声波模拟:可调试可验证的DG-FEM实现

简介:本资源是一套基于Matlab实现二维声波方程数值求解的教学实践代码包,面向计算数学、声学仿真及偏微分方程数值方法方向的高年级本科生与研究生,聚焦间断有限元(DG)方法在波动问题中的应用。资源采用线性基函数构建…

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

日新闻

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/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →