STM32F429 移植 LiteOS 实战:CubeMX 创建 HAL 库工程指南
1. 为什么要在 F429 上跑 LiteOS从裸机到实时系统的真实动机很多刚接触 STM32F429 的朋友第一个工程往往是点灯、串口打印、跑个 SysTick 延时裸机写起来确实爽代码逻辑一眼看到底。但只要你开始做稍微复杂一点的东西比如多路传感器采集、屏幕刷新、按键响应、串口协议解析同时进行裸机那套while(1)加状态机的写法就会迅速失控。任务之间互相抢占一个HAL_Delay卡住整个系统按键响应延迟到让人抓狂这时候你就需要一个真正的实时操作系统来帮你调度。STM32F429 这颗芯片在当年算是性能相当能打的存在Cortex-M4 内核带 FPU主频能跑到 180MHz片上 SRAM 有 192KB112KB16KB64KB外扩 SDRAM 之后跑 GUI 都绰绰有余。拿它来跑一个轻量级 RTOS资源上完全不虚。而华为 LiteOS 作为一款面向 IoT 领域的轻量级实时操作系统内核精简、启动快、功耗管理做得不错最关键的是它提供了一套比较完整的组件比如任务调度、信号量、互斥锁、消息队列、软件定时器甚至还有内存管理和异常处理框架对于中小型嵌入式项目来说够用且不臃肿。那为什么标题里强调“STM32CubeMX 创建 HAL 库工程”再“移植 LiteOS”因为这是目前最省事、最不容易翻车的一条路。CubeMX 帮你把时钟树、引脚复用、外设初始化这些繁琐的底层配置全部图形化生成HAL 库虽然被人吐槽效率不如标准库但它的可移植性和可读性在工程化项目里优势明显。你不需要手动去算 PLL 分频系数也不需要一个个查寄存器地址点几下鼠标就能得到一个能编译能跑的工程骨架。在这个骨架上再挂载 LiteOS 内核工作量就集中在几个关键文件的对接上而不是从零搭建启动流程。这篇文章适合哪些人看如果你已经能用 CubeMX 生成一个 F429 的 HAL 工程会点 C 语言对中断和时钟有基本概念但从来没移植过 RTOS那这篇就是写给你的。我会把整个流程拆成可复现的步骤包括工程配置、文件裁剪、中断对接、系统节拍配置、任务创建以及我实际移植过程中踩过的坑。文末会附上整理好的源码结构说明方便你直接对照自己的工程。2. 移植前的整体思路与工程骨架设计2.1 为什么选择“CubeMX HAL LiteOS”这套组合先说说方案选型的逻辑。市面上常见的 RTOS 有 FreeRTOS、RT-Thread、LiteOS 等为什么偏偏选 LiteOS一方面LiteOS 的内核代码量小核心调度部分几千行读起来不费劲适合学习和中小项目另一方面它的 API 风格比较统一任务、队列、信号量的接口命名清晰上手成本低。更重要的是LiteOS 对 Cortex-M 系列的支持比较成熟移植层代码结构清晰你只需要实现几个与硬件相关的接口就能跑起来。那为什么不用寄存器版本而用 HAL因为移植 RTOS 的核心难点不在外设驱动而在系统节拍、中断优先级、堆栈管理这些和内核强相关的地方。CubeMX 生成的 HAL 工程已经把启动文件、时钟配置、中断向量表都安排好了你只需要在这个基础上“插入”LiteOS 的调度逻辑而不是重新写一遍启动代码。这能大幅降低出错概率尤其是对新手来说少改一行启动汇编就少一个通宵调试的理由。2.2 工程目录结构该怎么规划我见过很多人移植 RTOS 失败不是代码写错了而是文件放乱了头文件路径一团糟最后编译报错几百条不知道从哪看起。所以在动手之前先把目录结构定好。我的习惯是在 CubeMX 生成的工程根目录下新建一个LiteOS文件夹里面再细分kernel放 LiteOS 内核源码包括任务调度、内存管理、队列等核心 C 文件arch放与 Cortex-M4 相关的移植层代码比如上下文切换汇编、中断对接include放 LiteOS 的公共头文件config放los_config.h这个关键配置文件CubeMX 生成的Core、Drivers目录保持不动MDK-ARM或STM32CubeIDE的工程文件里通过“添加分组”的方式把 LiteOS 的文件挂进来。这样做的好处是CubeMX 重新生成代码时不会覆盖你的 LiteOS 目录工程结构也清晰后期换芯片或者升级库版本都好维护。2.3 移植的核心工作到底有哪些很多人一听“移植操作系统”就觉得是个大工程其实拆开来看就四件事。第一把 LiteOS 的源码文件按需裁剪去掉你用不到的组件减少编译体积。第二实现或对接系统节拍让 LiteOS 知道时间过去了多少。第三处理中断优先级尤其是 PendSV、SysTick、SVC 这三个和内核调度强相关的中断必须和 HAL 库的默认配置协调好。第四提供内存堆和任务栈的底层支持让 LiteOS 能动态分配内存、切换任务栈。这四件事里最容易出问题的是中断优先级。HAL 库默认会把 SysTick 优先级设得比较低而 LiteOS 要求 PendSV 和 SysTick 的优先级配置在特定范围内否则会出现任务切换异常、系统卡死、HardFault 等问题。后面我会详细讲怎么改。3. LiteOS 源码裁剪与关键文件解析3.1 哪些文件必须保留哪些可以删LiteOS 官方源码包拿到手之后你会发现文件挺多的但真正跑一个最小系统用不了那么多。以我实际移植的经验内核部分必须保留的文件包括任务调度相关的los_task.c、内存管理相关的los_membox.c和los_memheap.c、队列和信号量相关的los_queue.c、los_sem.c、los_mux.c以及系统初始化相关的los_init.c。移植层必须保留los_hw.c、los_hwi.c和上下文切换的汇编文件。可以删掉或者暂时不加入工程的有跟网络协议栈相关的组件、文件系统、OTA 升级、部分调试跟踪模块。这些东西在你需要的时候再加回来一开始全塞进去只会让编译变慢、报错变多。裁剪的原则是“用到什么加什么”而不是“先全加上再说”。3.2 los_config.h 里几个必须改的配置项los_config.h是 LiteOS 的核心配置文件里面决定了系统支持多少任务、多少信号量、节拍频率是多少。有几个宏定义必须根据你的 F429 实际情况改LOSCFG_BASE_CORE_TICK_PER_SECOND系统节拍频率我一般设成 1000也就是 1ms 一个 tick这样延时精度和调度开销比较平衡。设太高会增加中断频率设太低任务延时不准。LOSCFG_BASE_CORE_TSK_LIMIT最大任务数默认可能只有十几个如果你任务多就往上调但别调太大每个任务控制块都占内存。LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE默认任务栈大小F429 内存充足可以设成 0x400 也就是 1KB复杂任务单独指定更大的栈。LOSCFG_BASE_MEM_NODE_SIZE内存节点大小影响动态内存分配的粒度一般保持默认即可。注意改los_config.h的时候一定要看清楚每个宏的注释有些配置项之间有依赖关系比如开了某个组件就必须同时开另一个否则编译会报未定义符号。3.3 移植层代码需要自己实现哪些函数LiteOS 的移植层并不是完全现成的它留了一些接口需要你根据具体芯片来实现。最典型的是LOS_Start之前的硬件初始化、系统节拍的启动、以及上下文切换的汇编实现。在 Cortex-M4 上上下文切换通常借助 PendSV 异常来完成你需要写一段汇编在 PendSV 中断里保存当前任务的寄存器组恢复下一个任务的寄存器组。这段汇编不用自己从零写LiteOS 的 arch 目录里一般有 Cortex-M 的参考实现你只需要确认它用的是不是 ARM 汇编语法和你的编译器Keil MDK 用 armasmSTM32CubeIDE 用 GCC是否匹配。如果编译器不匹配汇编文件会编译报错这时候要么换对应的汇编文件要么改写语法。4. 中断优先级与系统节拍的对接实操4.1 PendSV、SysTick、SVC 的优先级怎么设这是整个移植过程中最关键的一步也是最容易翻车的地方。Cortex-M4 的中断优先级数值越小优先级越高F429 的优先级寄存器是 4 位所以可选范围是 0 到 15。LiteOS 的调度依赖 PendSV 异常而 PendSV 必须被配置为最低优先级这样它才不会打断其他中断保证中断服务程序能完整执行。我的配置方案是这样的SysTick 优先级设为 15最低PendSV 也设为 15SVC 设为 0最高因为只在启动时用一次。但这里有个坑HAL 库默认会把 SysTick 优先级设成 15看起来没问题但 HAL 的HAL_InitTick函数会在HAL_Init里重新配置 SysTick如果你在 LiteOS 启动之后又调用了 HAL 的延时函数可能会干扰系统节拍。解决办法是在 LiteOS 启动后不要再依赖 HAL 的HAL_Delay而是用 LiteOS 提供的LOS_TaskDelay或者LOS_Msleep。具体修改位置在HAL_Init之后、LiteOS 初始化之前手动调用HAL_NVIC_SetPriority把 PendSV 和 SysTick 的优先级设好。代码大概长这样HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0); HAL_NVIC_SetPriority(SysTick_IRQn, 15, 0);提示如果你用的是 FreeRTOS 或者 LiteOS通常都会要求configKERNEL_INTERRUPT_PRIORITY设为最低LiteOS 里对应的就是 PendSV 和 SysTick 的优先级。设错了会出现任务切换后卡死、串口只打印一次就停住等现象。4.2 SysTick 中断里要做什么LiteOS 的系统节拍通常由 SysTick 中断驱动。在 SysTick 的中断服务函数里你需要调用 LiteOS 提供的节拍处理函数一般是LOS_TickHandler或者类似的接口。这个函数会递减每个任务的延时计数器如果有任务延时到期就把它重新加入就绪队列然后触发 PendSV 进行任务切换。这里要注意SysTick 中断服务函数的名称必须和启动文件里的向量表一致。CubeMX 生成的工程里SysTick 中断默认是SysTick_Handler而 HAL 库在这个函数里做了HAL_IncTick的操作。如果你直接把 LiteOS 的节拍处理塞进去要确保不要和 HAL 的 tick 冲突。我的做法是保留HAL_IncTick然后在后面加上 LiteOS 的节拍处理这样 HAL 的延时和 LiteOS 的调度互不干扰。void SysTick_Handler(void) { HAL_IncTick(); LOS_TickHandler(); // LiteOS 节拍处理 }4.3 启动流程的顺序不能乱LiteOS 的启动顺序很讲究。你不能在main函数一开始就创建任务因为此时系统节拍还没启动内存管理还没初始化。正确的顺序是先做 HAL 初始化、时钟配置然后调用 LiteOS 的初始化函数LOS_KernelInit这个函数会初始化内存堆、任务调度器、系统节拍等。初始化完成之后再创建你的应用任务最后调用LOS_Start启动调度器。一旦调用了LOS_Start程序就再也不会回到main函数的主循环了控制权完全交给 LiteOS 调度器。所以你在LOS_Start之前创建的任务会在调度器启动后开始运行。如果创建任务失败LOS_Start之前还能打印错误信息启动之后就只能靠串口或者调试器了。5. 任务创建与内存管理的实战细节5.1 第一个任务怎么写才规范创建任务用LOS_TaskCreate函数需要传入任务 ID 指针、任务参数结构体。任务参数里包括任务入口函数、任务名、栈大小、优先级等。我一般把优先级设成 5 到 10 之间数字越小优先级越高。入口函数必须是一个死循环里面不能有返回否则任务会跑飞。UINT32 task1_entry(UINT32 arg) { while (1) { printf(task1 running\r\n); LOS_TaskDelay(1000); // 延时 1000 个 tick即 1 秒 } return 0; }栈大小要根据任务里局部变量和函数调用深度来定。如果任务里用了printf或者浮点运算栈要开大一点我一般给 0x800 也就是 2KB。栈太小会出现任务运行一段时间后莫名 HardFault调试起来很痛苦。5.2 动态内存和静态内存怎么选LiteOS 支持动态创建任务和静态创建任务。动态创建时任务控制块和栈都从 LiteOS 的内存堆里分配静态创建时你需要自己提供全局数组作为栈空间。对于资源紧张的芯片静态创建更可控不会因为内存碎片导致分配失败。但 F429 有 192KB SRAM动态创建完全够用开发效率也更高。不过要注意LiteOS 的内存堆大小是在los_config.h里配置的默认可能只给了几十 KB。如果你创建的任务多、栈大就要把堆调大。堆的起始地址和大小通常定义在链接脚本或者los_config.h里确保它不会和你的全局变量、栈空间重叠。5.3 任务间通信的常用方式实际项目里任务不可能各跑各的总得交换数据。LiteOS 提供了信号量、互斥锁、消息队列、事件等机制。信号量适合做同步比如一个任务采集完数据释放信号量另一个任务等待信号量然后处理。消息队列适合传递数据块比如串口收到的数据打包成消息发给解析任务。互斥锁用来保护共享资源比如多个任务都要写同一个串口不加锁就会输出乱码。我踩过的一个坑是在中断服务程序里调用 LiteOS 的 API 时必须用带Isr后缀的版本比如LOS_QueueWriteIsr而不是普通的LOS_QueueWrite。普通版本可能会引起阻塞在中断里阻塞是绝对不允许的会直接导致系统崩溃。6. 常见问题排查与避坑经验实录6.1 编译报错找不到头文件怎么办这是最常见的问题原因通常是头文件搜索路径没加全。LiteOS 的头文件分布在include、arch/include、config等多个目录你需要在 IDE 的工程设置里把这些路径都加进去。Keil MDK 在 “Options for Target” 的 “C/C” 选项卡里加STM32CubeIDE 在工程属性的 “Include paths” 里加。加完之后如果还报错检查文件名大小写Linux 下编译对大小写敏感Windows 下不敏感跨平台移植时容易在这里翻车。6.2 系统启动后卡死或 HardFault 怎么查卡死和 HardFault 是移植 RTOS 的两大经典问题。排查思路是这样的首先确认中断优先级配置是否正确尤其是 PendSV 和 SysTick 是否设为最低。其次检查栈是否溢出可以在任务栈的末尾填充特定图案运行一段时间后看图案是否被覆盖。再次检查LOS_Start之前是否有多余的阻塞操作比如在创建任务前调用了HAL_Delay而 HAL 的 tick 还没正常运转。还有一个隐蔽的坑CubeMX 生成的启动文件里堆栈大小是默认值可能不够 LiteOS 使用。你需要在启动文件里把Stack_Size和Heap_Size适当调大尤其是 Heap因为 LiteOS 的动态内存可能就是从这块堆里划出来的。6.3 任务延时不准是什么原因任务延时不准通常和系统节拍频率有关。如果你把LOSCFG_BASE_CORE_TICK_PER_SECOND设成 1000那LOS_TaskDelay(1000)就是 1 秒。但如果 SysTick 的时钟源配置错了比如本来应该是 1ms 中断一次结果变成了 10ms 一次那延时就会变成 10 秒。检查 SysTick 的 reload 值是否正确F429 在 180MHz 主频下1ms 的 reload 值应该是 180000 减 1。另外如果你在中断里做了耗时操作会推迟 SysTick 中断的响应导致节拍丢失延时也会不准。中断服务程序要尽量短耗时操作放到任务里做。6.4 常见问题速查表问题现象可能原因排查方向编译报未定义符号源文件没加入工程或头文件路径缺失检查工程分组和 include 路径启动后立即 HardFault中断优先级配置错误或栈溢出检查 PendSV/SysTick 优先级增大栈任务只运行一次就停任务入口函数有返回或未加死循环确认入口函数是 while(1)串口输出乱码多任务同时写串口未加互斥锁加互斥锁或改用消息队列延时时间不对系统节拍频率配置错误检查 SysTick reload 值和 tick 频率动态创建任务失败内存堆太小或碎片过多增大堆大小改用静态创建经验移植 RTOS 的时候建议先用一个最简单的点灯任务验证系统能跑起来再逐步加串口、加其他任务。不要一上来就把所有功能都堆上去出了问题很难定位是哪个环节的错。7. 源码结构与后续扩展建议整理好的源码目录大概是这样Core目录下是 CubeMX 生成的main.c、stm32f4xx_it.c、stm32f4xx_hal_msp.c等LiteOS/kernel下是内核源码LiteOS/arch下是移植层LiteOS/config下是los_config.hDrivers下是 HAL 库和 CMSIS。工程里把 LiteOS 的文件按分组挂进去编译选项里加上头文件路径和必要的宏定义。后续如果你想扩展可以往几个方向走。一是加入 LiteOS 的软件定时器组件做周期性任务更方便。二是接入 shell 组件通过串口命令行调试系统状态查看任务列表和内存使用情况。三是结合 F429 的 DMA 和双缓冲机制做高速数据采集LiteOS 的任务调度能很好地协调采集、处理和传输三个环节。我个人在实际操作中的体会是移植 RTOS 最怕的就是“想当然”觉得配置改一下就能跑。实际上每一个配置项背后都有它的作用改之前最好查一下文档或者源码注释理解它影响的是什么。尤其是中断优先级和内存配置这两块改错了不会立刻报错而是运行一段时间后随机崩溃那种问题最难查。所以宁可前期多花半小时把配置理清楚也不要后期花两天去调试一个随机 HardFault。

相关新闻

秒杀系统实战:从限流到库存扣减的高并发方案

秒杀系统实战:从限流到库存扣减的高并发方案

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

2026/10/13 1:15:59 阅读更多 →
Nginx域名访问后台管理系统实战:从IP端口到HTTPS反向代理

Nginx域名访问后台管理系统实战:从IP端口到HTTPS反向代理

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

2026/10/13 1:15:59 阅读更多 →
嵌入式老兵转机器人:STM32、电机控制、Linux驱动三条高薪路线怎么选

嵌入式老兵转机器人:STM32、电机控制、Linux驱动三条高薪路线怎么选

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

2026/10/13 1:15:59 阅读更多 →

最新新闻

ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化

ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化

文档 【免费下载链接】docs Documentation for Docker Official Images in docker-library 项目地址: https://gitcode.com/gh_mirrors/docs/docs 点击查看 免费下载 导读:本文以 docker-library 官方文档仓库中的 arangodb/content.md 为骨架&#xff…

2026/10/13 1:57:17 阅读更多 →
Litmus 混沌实验实战 FAQ 深度解读:网络故障注入、目标圈定与实验全生命周期管理

Litmus 混沌实验实战 FAQ 深度解读:网络故障注入、目标圈定与实验全生命周期管理

云原生运维可观测性 【免费下载链接】litmus Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGei…

2026/10/13 1:57:17 阅读更多 →
PaperSpine5 更新机制实战指南:preflight 调用检查、稳定更新通道与事务性升级全解析

PaperSpine5 更新机制实战指南:preflight 调用检查、稳定更新通道与事务性升级全解析

AI 技能AI 写作人工智能深度研究AI 应用 【免费下载链接】PaperSpine PaperSpine5 — local-first, evidence-bound paper research, writing, figures, review and delivery. Download: https://wubing2023.github.io/PaperSpine/v5/ 项目地址: https://gitcode.co…

2026/10/13 1:57:17 阅读更多 →
Java+MySQL学生宿舍管理系统课设:数据库设计、Swing界面与避坑指南

Java+MySQL学生宿舍管理系统课设:数据库设计、Swing界面与避坑指南

简介:这是一个基于MySQLJavaSwing开发的学生宿舍管理系统课程设计资源,面向高校计算机相关专业学生,可用于数据库课程设计、Java桌面应用开发或毕业设计初期参考,也可作为自学Java GUI编程的完整实例。资源包共含334个文件&#x…

2026/10/13 1:57:16 阅读更多 →
实车路试注意事项:从出发前准备到数据记录与应急处理

实车路试注意事项:从出发前准备到数据记录与应急处理

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

2026/10/13 1:57:16 阅读更多 →
论文查重降重红黑榜:这几类工具纯属浪费时间

论文查重降重红黑榜:这几类工具纯属浪费时间

每年三四月,论文查重降重就成了毕业生绕不开的关卡。有人花几百块买教训,有人熬几个通宵手动改红字,还有人查重结果和学校终检差了十万八千里。这篇红黑榜不吹不黑,把常见的坑和值得用的工具一次说清楚,看完能帮你省下…

2026/10/13 1:56:16 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →