STM32高效学习避坑指南:掌握四大核心能力,从入门到项目实战
如果你正在学习STM32或者感觉学了很久但进步缓慢这篇文章就是为你准备的。这不是一个具体的项目而是一份基于大量实践和踩坑经验总结出的“避坑指南”。很多初学者包括我自己都曾花费大量时间在错误的方向上努力走了三年甚至更久的弯路。今天我们不谈某个具体的库函数怎么用而是直接点破STM32学习的四个核心关键点。掌握了这四点你的学习效率会直线上升从“知道怎么用”真正进阶到“理解为什么这么用”。很多人一上来就埋头看手册、抄代码结果遇到问题就卡住项目做不出来信心备受打击。问题的根源往往不在于你不够努力而在于学习路径和方法错了。这篇文章将围绕开发环境、调试手段、外设驱动、项目思维这四个维度为你梳理出一条清晰、高效的学习路线。我们会用最直接的方式告诉你每个阶段应该做什么、避免什么并提供可立即上手的验证方法和排查思路。1. 核心能力速览STM32高效学习路径在深入细节之前我们先通过一个表格快速了解高效学习STM32需要构建的四个核心能力模块。这能帮你快速判断自己的学习阶段和薄弱环节。能力模块核心目标常见弯路本文解决思路开发环境建立稳定、可复现的工程构建与程序下载流程。依赖不明确的工程、无法烧录、频繁更换IDE。固化一套标准开发流程Keil STM32CubeMX并理解其底层逻辑。调试手段具备定位程序运行逻辑、内存状态、外设寄存器问题的能力。仅靠printf打印遇到复杂时序或硬件问题束手无策。掌握Keil Debugger、逻辑分析仪、串口助手等组合调试工具。外设驱动理解并能够独立配置和使用GPIO、UART、ADC、TIMER等核心外设。只会复制粘贴代码不理解配置参数含义无法移植或修改。从寄存器、标准库到HAL库的渐进式理解并建立自己的驱动模块。项目思维将零散的知识点整合为可运行、可维护的完整嵌入式系统。只会做单个实验无法将多个功能组合成一个项目。通过一个综合性项目如智能台灯串联所有知识点并引入模块化设计思想。2. 适用场景与使用边界这套学习方法论主要适用于以下人群和场景STM32初学者刚刚接触感到迷茫不知从何下手。有一定基础但遇到瓶颈者学了很多零散知识但无法独立完成项目。希望从51/Arduino转向STM32的开发者需要建立更系统、更底层的嵌入式开发思维。学生或爱好者准备课程设计、毕业设计或电子竞赛需要快速提升实战能力。使用边界与提醒非具体项目教程本文不提供某个特定传感器如DS1302、水位传感器或某个特定协议如ISO-TP UDS的逐行代码讲解而是提供掌握这些具体技术的通用方法和框架。强调理解而非记忆方法的核心是理解原理和建立思维模型死记硬背寄存器或函数名效率低下。硬件是基础所有软件逻辑都建立在正确的硬件连接电路设计之上。文中会强调硬件验证的重要性。3. 环境准备与前置条件工欲善其事必先利其器。一个稳定、高效的开发环境是避免走弯路的起点。很多初学者的问题都源于环境配置混乱。1. 硬件准备清单STM32开发板建议选择一款资源丰富、资料齐全的型号如STM32F103系列C8T6最小系统板它涵盖了大部分基础外设社区支持极好。下载/调试器ST-LINK V2是性价比最高的选择。务必购买正版或口碑好的版本劣质的调试器会导致各种玄学问题。USB转串口模块用于UART通信调试和printf重定向CH340或CP2102芯片均可。逻辑分析仪可选但强烈推荐用于分析SPI、I2C、PWM等时序信号是排查硬件通信问题的利器。入门级8通道即可。万用表、杜邦线、电阻电容等基础硬件调试工具。2. 软件环境搭建集成开发环境IDEKeil MDK-ARM (uVision5)。虽然也有IAR、VSCodeEclipse等选择但Keil在国内资料最全生态最完善初学者首选。确保安装时兼容ARM Cortex-M系列设备。STM32CubeMXST官方的图形化配置工具。这是你学习STM32最重要的“脚手架”。它可以自动生成初始化代码让你直观地配置时钟、引脚、外设参数极大降低入门门槛。STM32CubeProgrammer用于烧录hex/bin文件到芯片有时比Keil自带的下载更稳定。串口调试助手如XCOM、SSCOM用于查看串口打印信息。代码阅读/编辑工具Source Insight或VSCode用于高效阅读ST的标准库或HAL库源码。关键一步安装好Keil和CubeMX后不要急于写代码。先用CubeMX为你的开发板生成一个最简单的LED闪烁工程并用Keil编译、下载、运行。确保这个“Hello World”级别的流程100%畅通。这是你后续所有学习的基石。4. 核心关键一固化开发环境与构建流程走了弯路才明白随意创建工程、依赖不明路径的头文件、编译报错就换个模板这些习惯会浪费无数时间。标准化工程创建流程使用CubeMX初始化永远以CubeMX工程为起点。配置时钟树理解HSE、HSI、PLL、配置调试接口Serial Wire、配置需要用到的外设GPIO、UART等。生成工程选择MDK-ARM V5作为Toolchain生成代码。勾选“为每个外设生成独立的.c/.h文件”这有利于模块化管理。工程目录结构生成的工程通常包含DriversHAL库、BSP、Inc、Src、MDK-ARM等。不要在Drivers目录里直接修改库文件你的应用代码应写在Src和Inc中或自己新建的模块文件夹。管理库文件理解stm32f1xx_hal_conf.h这样的配置文件它通过宏定义来裁剪用不到的HAL库模块以节省代码空间。可复现的烧录与调试设置 在Keil中进入Options for Target-Debug正确选择你的调试器ST-LINK Debugger。在Utilities标签页勾选Use Debug Driver进行烧录。// 示例在main.c中验证环境是否就绪 #include main.h #include gpio.h int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while (1) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); HAL_Delay(500); // 使用HAL_Delay验证SysTick定时器是否正常 } }编译下载后如果LED正常闪烁说明你的开发环境、编译器、下载器、基础时钟配置全部正确。这个简单的验证至关重要。5. 核心关键二掌握多维度的调试手段仅靠printf打印是远远不够的。嵌入式调试是“侦探工作”你需要多种工具来获取不同维度的线索。1. Keil Debugger 在线调试 这是最强大的软件调试工具但很多人只用来单步运行。查看外设寄存器在Peripherals菜单中打开你正在使用的外设如GPIO、USART可以实时查看和修改寄存器值。这是理解HAL库底层操作的最佳窗口。查看内存Memory Window可以查看指定地址的内存数据对于排查数组越界、指针错误非常有用。断点与观察点除了行断点还能设置数据观察点当某个变量被修改时中断用于排查难以复现的变量被意外修改的问题。调用栈Call Stack当程序跑飞或进入HardFault时查看调用栈能帮你定位到出错的函数。2. 串口调试printf重定向 将printf函数重定向到串口是输出程序状态信息最基本有效的方法。// 在usart.c中重写fputc函数 #include stdio.h #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, 0xFFFF); return ch; } // 之后就可以在代码中使用printf了 printf(System Clock: %lu Hz\r\n, HAL_RCC_GetSysClockFreq());3. 逻辑分析仪抓取时序 当调试SPI、I2C、PWM、红外编码等通信协议时逻辑分析仪是无可替代的。它能直观地显示波形、时序、数据字节。例如调试STM32与TM1637数码管驱动芯片的通信或者排查DS1302时钟芯片的读写时序没有逻辑分析仪就像盲人摸象。连接将分析仪的通道连接到通信线的SCK、MOSI、MISO等。设置配置正确的采样率和协议分析器如I2C、SPI解码器。验证对比抓取到的波形和数据与协议手册是否一致。4. 万用表与示波器万用表检查电源电压3.3V、引脚电平、短路或断路。示波器观察模拟信号、电源纹波、中断响应时间等。例如调试ADC采集时可以用示波器看输入信号是否正常。6. 核心关键三深入理解外设驱动而非复制粘贴学习外设时最容易陷入“复制代码-修改引脚-能跑就行”的陷阱。要理解三层抽象寄存器、标准库、HAL库。以GPIO输出为例建立理解层次寄存器层理解根本直接操作GPIOx_CRL、GPIOx_ODR等寄存器来控制引脚。这能让你最深刻地理解一个引脚如何被配置为输出、推挽、上拉以及如何输出高低电平。// 直接操作寄存器点亮PA1引脚假设为推挽输出 RCC-APB2ENR | 12; // 使能GPIOA时钟 GPIOA-CRL ~(0xF 4); // 清空PA1配置位 GPIOA-CRL | (0x3 4); // 配置PA1为50MHz推挽输出模式 GPIOA-ODR | (1 1); // PA1输出高电平标准库层过渡理解ST早期提供的库封装了寄存器操作如GPIO_SetBits、GPIO_ResetBits。很多老项目和老教程使用它理解它有助于阅读遗留代码。GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_SetBits(GPIOA, GPIO_Pin_1);HAL/LL库层当前主流ST现在主推的硬件抽象层。HAL_GPIO_WritePin、HAL_GPIO_TogglePin。CubeMX生成的就是HAL库代码。关键是要会利用CubeMX生成初始化代码并学会查阅HAL库的说明文档注释和源码。// CubeMX生成的初始化代码片段 GPIO_InitTypeDef GPIO_InitStruct {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin GPIO_PIN_1; GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull GPIO_NOPULL; GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, GPIO_InitStruct); // 应用代码 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);学习路径建议对于每个新外设如UART、ADC、TIMER按以下步骤看原理图确定硬件连接引脚。用CubeMX配置图形化设置参数波特率、采样时间、分频系数等生成代码。读生成的代码对照CubeMX的配置看它初始化了哪些寄存器。查阅参考手册RM找到对应外设章节理解每个配置参数在寄存器层面的含义。编写应用函数基于HAL库提供的API如HAL_UART_Transmit、HAL_ADC_Start编写自己的驱动模块。调试与验证用上一节提到的调试手段验证功能是否正常。7. 核心关键四从“功能堆砌”到“项目思维”单个外设跑通只是开始真正的能力体现在能否将它们有机组合完成一个项目。以“基于STM32的智能台灯”为例它可能涉及GPIO控制LED灯珠PWM调光。ADC采集光敏电阻值实现自动调光。定时器TIM产生PWM信号并实现按键消抖计时。中断按键触发改变模式。UART与上位机如OpenMV通信或打印调试信息。I2C/SPI驱动OLED屏幕显示状态。建立项目思维的方法模块化设计为每个相对独立的功能创建单独的.c/.h文件。例如bsp_led.c封装LED初始化、亮、灭、闪烁、PWM调光函数。bsp_key.c封装按键扫描支持单击、长按函数。bsp_uart.c封装串口发送、接收中断DMA函数。app_light_control.c实现台灯的核心控制逻辑它调用底层的bsp_led和bsp_key。状态机编程对于台灯这种有多种模式手动调光、自动感应、定时关闭的项目使用状态机是清晰且可靠的方法。typedef enum { MODE_MANUAL, MODE_AUTO, MODE_TIMER } LightMode_t; LightMode_t g_current_mode MODE_MANUAL; void Light_Task(void) { switch(g_current_mode) { case MODE_MANUAL: // 处理按键调整亮度 break; case MODE_AUTO: // 读取ADC根据光照自动调整亮度 break; case MODE_TIMER: // 倒计时关闭逻辑 break; } }善用RTOS可选但建议当项目复杂度增加多个任务需要并发执行时如一边采集传感器一边刷新屏幕一边响应网络学习使用FreeRTOS等实时操作系统。它提供了任务、队列、信号量等机制能让你的程序结构更清晰。可以从创建两个简单的任务一个闪灯一个打印开始尝试。8. 常见问题与系统性排查方法遇到问题不要慌按照以下清单自上而下进行排查可以解决90%的难题。问题现象可能原因排查步骤解决方案程序下载失败1. 下载器连接问题2. 芯片型号选错3. 芯片被写保护RDP4. Boot引脚配置错误1. 检查ST-LINK与板子的SWD接口SWCLKSWDIO连接。2. 检查Keil中Device是否与板载MCU一致。3. 使用STM32CubeProgrammer连接查看是否提示读保护。4. 检查BOOT0/BOOT1引脚电平确保处于从主Flash启动模式。1. 重新插拔检查线序。2. 在CubeMX中确认型号并重新生成工程。3. 用CubeProgrammer进行全片擦除解除保护。4. 将BOOT0拉低接GND。程序运行异常一上电就死机1. 时钟配置错误尤其是HSE2. 中断向量表地址错误3. 堆栈溢出4. 访问非法内存地址1. 检查CubeMX中时钟树配置如果使用外部晶振HSE确认是否起振。2. 检查startup_stm32f1xx.s等启动文件是否正确。3. 在Keil Debug中查看HardFault_Handler分析调用栈。4. 检查数组、指针操作是否越界。1. 暂时使用HSI内部时钟源测试。2. 确保工程配置的芯片型号与启动文件匹配。3. 在Options for Target中增大堆栈Stack/Heap大小。4. 使用调试器观察变量和内存。外设如UART不工作1. 引脚复用未开启2. 时钟未使能3. 参数配置错误波特率等4. 硬件连接问题1. 在CubeMX中检查该引脚是否已正确配置为对应功能如USART1_TX。2. 检查代码中__HAL_RCC_USART1_CLK_ENABLE()是否被调用。3. 用逻辑分析仪测量TX引脚波形计算实际波特率。4. 检查USB转串口模块的TX/RX是否与MCU交叉连接。1. 重新用CubeMX生成代码。2. 检查SystemClock_Config函数是否被调用。3. 核对波特率、数据位、停止位、校验位设置。4. 使用万用表测量通断。ADC采集值不准或跳动大1. 参考电压不稳2. 采样时间不足3. 模拟地与数字地处理不当4. 软件滤波不足1. 测量MCU的VDDA/VREF引脚电压是否为稳定的3.3V。2. 在CubeMX中增加ADC的采样周期Sample Time。3. 检查PCB布局模拟部分做好滤波和单点接地。4. 在软件中实现多次采样取平均或中值滤波。1. 为VDDA增加滤波电容。2. 将采样时间设置为芯片支持的最大值测试。3. 优化硬件设计。4. 实现软件滤波算法。PWM输出无波形或频率不对1. 定时器时钟未使能或分频设置错误2. 引脚未配置为复用输出3. 自动重载值ARR或预分频PSC计算错误4. 未启动PWM通道1. 检查__HAL_RCC_TIMx_CLK_ENABLE()。2. 检查CubeMX中引脚模式是否为Alternate Function Push-Pull。3. 根据公式PWM频率 定时器时钟 / ((ARR1)*(PSC1))核对。4. 检查是否调用了HAL_TIM_PWM_Start(htimx, TIM_CHANNEL_x)。1. 确保定时器时钟总线APB1/APB2已使能。2. 重新生成代码。3. 使用CubeMX的“Parameter Settings”选项卡计算并设置ARR和PSC。4. 在初始化后调用启动函数。9. 最佳实践与进阶路线给初学者的最佳实践从固件库例程开始ST官方提供的HAL库例程包STM32CubeFW是最好的学习资料里面有几乎所有外设的使用示例。善用社区和搜索引擎遇到报错信息直接复制到CSDN、StackOverflow或电子论坛搜索。大概率有人遇到过同样的问题。建立自己的代码仓库将调试通过的各个外设驱动模块、常用工具函数如软件定时器、滤波器、环形队列整理好放入Git仓库。这是你最重要的财富。阅读数据手册DS和参考手册RMDS了解芯片特性RM了解外设细节。虽然枯燥但遇到难题时它是终极答案。动手做项目找一个感兴趣的小项目如温湿度计、蓝牙小车、简易示波器从头到尾做一遍遇到的问题就是你最好的老师。清晰的进阶路线图阶段一点灯大师掌握GPIO、时钟、延时、调试。阶段二通信能手掌握UART、I2C、SPI能与各种传感器、屏幕、模块通信。阶段三控制专家掌握TIMER产生PWM、捕获输入ADC/DAC采集与输出实现电机控制、电源管理等。阶段四系统玩家掌握中断、DMA提高效率学习FreeRTOS管理复杂多任务。阶段五协议高手深入理解USB、CAN、Ethernet等复杂协议栈并能进行移植和调试。学习STM32技术细节固然重要但更重要的是建立正确的学习方法和思维框架。避免在环境配置、盲目抄代码、低效调试上浪费大量时间。抓住开发环境、调试手段、外设驱动、项目思维这四个关键点有目的地去练习和积累你就能快速跨越入门期真正具备独立开发嵌入式产品的能力。建议将本文提到的验证方法和排查清单保存下来在后续的学习中反复对照使用。

相关新闻

GitLab HTTPS配置实战:从HTTP迁移到安全部署全解析

GitLab HTTPS配置实战:从HTTP迁移到安全部署全解析

1. 项目概述:从HTTP到HTTPS的必然升级 最近在内部部署的GitLab上折腾,把访问协议从HTTP升级到了HTTPS。这活儿听起来简单,不就是改个配置加个证书嘛,但真动起手来,从Nginx配置、证书处理到GitLab自身的各种路径适配&am…

2026/10/13 5:17:42 阅读更多 →
利用腾讯云Lighthouse新用户优惠,从零部署OpenClaw智能体框架

利用腾讯云Lighthouse新用户优惠,从零部署OpenClaw智能体框架

1. 项目缘起:为什么现在要关注OpenClaw?如果你最近在关注AI应用开发或者智能体(Agent)领域,大概率已经听过OpenClaw这个名字了。它不是一个新模型,而是一个开源的、功能强大的AI智能体框架。简单来说&#…

2026/10/10 16:25:50 阅读更多 →
构建AI工具导航站:从信息过载到精准匹配的设计与实践

构建AI工具导航站:从信息过载到精准匹配的设计与实践

1. 项目概述:为什么我们需要一个“最全的AI工具集”导航站?在AI浪潮席卷全球的今天,每天都有数十款新工具诞生,同时也有不少项目悄然消失。作为一名长期关注AI应用落地的从业者,我深刻体会到,无论是产品经理…

2026/10/15 3:28:54 阅读更多 →

最新新闻

瑞萨RA4L1开发板e2studio环境搭建与最小系统验证实战

瑞萨RA4L1开发板e2studio环境搭建与最小系统验证实战

简介:本资源面向使用瑞萨RA4L1系列MCU进行嵌入式开发的工程师与学习者,基于e2studio集成开发环境,提供RA4L1评估套件的开发板测试工程。RA4L1基于支持TrustZone的Arm Cortex-M33内核,工作电压低至1.6V,待机电流低至1.6…

2026/10/15 13:04:28 阅读更多 →
Kubernetes Dashboard从入门到实战:部署、权限与排障全解析

Kubernetes Dashboard从入门到实战:部署、权限与排障全解析

Kubernetes图形化工具一直是实操中的重要一环。命令行的kubectl固然强大,但对于需要快速预览集群状态、排查异常、或者让团队成员低门槛接入的场景,一个趁手的图形界面能省下大量沟通成本。这次想聊的就是K8s生态里最经典的图形化工具:Dashbo…

2026/10/15 13:04:28 阅读更多 →
SQLite FTS5上下文模式:轻量级本地AI语义检索实践

SQLite FTS5上下文模式:轻量级本地AI语义检索实践

1. “context-mode”到底是什么?一个被误读的技术概念正在悄悄改变本地AI工作流最近在多个开发者社区、数据库工具讨论组和AI工程实践帖子里,频繁出现“context-mode”这个词。它既不是SQLite的官方术语,也不属于任何主流AI框架的内置模式&am…

2026/10/15 13:04:28 阅读更多 →
context-mode:运行时行为分派机制的设计与落地实践

context-mode:运行时行为分派机制的设计与落地实践

1. 从“context-mode”这个词说起:它到底在解决什么问题第一次看到“context-mode”这个标题,很多人会愣一下——它不像“XX管理系统”“XX爬虫框架”那样一眼能看出用途。我最初接触这个词是在做对话式应用的时候,当时团队里有人提出“要不要…

2026/10/15 13:04:28 阅读更多 →
SQLite上下文感知检索:基于FTS5与MCP的语义调度模式

SQLite上下文感知检索:基于FTS5与MCP的语义调度模式

1. “context-mode”到底是什么?别被术语唬住,它本质是种数据上下文调度策略“context-mode”这个词最近在开发者圈子里频繁出现,尤其和MCP、SQLite、FTS5、BM25这些词绑在一起刷屏。很多人第一反应是——又一个新出的AI协议?还是…

2026/10/15 13:04:28 阅读更多 →
emoji 图片与编码表维护指南:从豆腐块到精准匹配

emoji 图片与编码表维护指南:从豆腐块到精准匹配

简介:这份资源面向移动端开发者、前端工程师及文本处理研究者,系统整理了emoji表情的图形素材与编码对照数据,帮助解决跨平台表情显示异常、编码转换与数据库存储等实际问题。压缩包共468个文件,以467张png图片和1个sql数据库文件…

2026/10/15 13:03:27 阅读更多 →

日新闻

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 阅读更多 →