STM32F1实战指南:选型、外设配置与项目避坑经验
我最早接触STM32F1系列是因为手头一个需要多路传感器采集和电机控制的样机。那时候市面上能选的32位MCU已经不少但评估了一圈最后还是回到STM32F1上资料多、外设全、上手门槛低而且网上随便一搜都是现成的参考代码。这个系列虽然被很多人当成“入门芯片”但真正要把它的性能榨干、把坑避开还是有不少门道。今天这篇文章就针对STM32F1系列从选型、开发环境、核心外设配置到项目落地时的高频问题把我在实际项目中沉淀下来的经验一次性讲清楚。内容偏实战新手可以照着搭工程老手也能看看有没有自己没注意到的细节。1. STM32F1系列到底强在哪内核、型号与选型思路1.1 内核与架构特点STM32F1系列基于ARM Cortex-M3内核主频最高72MHz。很多人一听到72MHz就觉得“不够看”但要注意Cortex-M3是经典的三级流水线设计同频下的指令执行效率比很多M0/M0内核高不少。做常规的工业控制、数据采集、电机驱动72MHz配合 DMA 完全够用而且发热低、电源设计简单。另一个容易被忽视的点是存储器架构。STM32F1系列采用哈佛结构指令和数据总线分开Flash等待周期对性能影响很大所以代码里经常需要配置Flash预取缓冲和等待周期。很多人写的程序跑得慢不一定是算法问题而是Flash等待周期配置不当导致CPU频繁空转。实际上主频72MHz时Flash等待周期需要配置为2同时开启Prefetch Buffer这个细节我在后面时钟配置部分会再强调。1.2 常见型号分类与选型建议STM32F1系列型号很多从F101到F103再到F105/F107主要差异在资源和外设上。实际项目中最常用的还是F103系列它包含内存从16KB Flash/4KB SRAM到512KB Flash/64KB SRAM不等封装从LQFP36到LQFP144、BGA等都有外设覆盖了USART、SPI、I2C、CAN、USB、ADC、DAC、定时器等选型时不要只看Flash大小SRAM往往更是瓶颈。比如做音频缓冲、大数组运算或者带GUI界面64KB SRAM看着不小但一个800x480的RGB565全屏缓存就超过768KB根本放不下。所以很多GUI项目会用F103搭配外部SRAM或者干脆换更高端的F4系列。STM32F1有FSMC接口可以直接挂外部SRAM/LCD这也是它生命力强的原因之一。常见选型建议表格需求场景建议型号关键理由简单IO控制、传感器读取STM32F103C8T6性价比高Flash 64KB够用QFN/LQFP48封装便于打样多路串口通信、Modbus网关STM32F103RCT65个USARTLQFP64管脚数量适中带LCD显示、外部存储器STM32F103ZET6FSMC接口144脚扩展能力强双CAN总线、以太网应用STM32F105RBT6 / F107内置双CAN或以太网MAC资源极小、成本敏感STM32F101C8T6无USB比F103便宜但ADC和定时器也有所精简1.3 一个实用的选型决策流程我现在的选型路径比较固定简单归纳为四步先把外设接口清单列出来需要几个串口、几路ADC、几个定时器、是否用CAN/USB/DMA。算最大SRAM占用全局变量、堆栈、缓冲区的峰值叠加再留至少30%余量。定封装和FlashLayout加工难度也是成本能用48脚搞定就不要上64脚甚至144脚。最后确认温度范围、供电电压、是否有第二货源。这四步走下来基本不会选错。尤其要提醒的是很多项目一开始用C8T664KB Flash觉得够用结果功能越加越多最后代码快满了只能痛苦地迁移到RCT6。所以起步时我建议把Flash需求打1.5倍宁可型号选大一点也不要后期重画板子。2. 从零搭建STM32F1开发环境标准外设库与HAL库怎么选2.1 开发工具链搭配STM32F1的开发工具链常见的组合有几套Keil MDK ST-Link、IAR J-Link、STM32CubeIDE ST-Link还有纯GCC OpenOCD。我个人的建议非常直接刚入门直接用STM32CubeIDE免费、跨平台、不需要破解而且集成了CubeMX图形化配置生成代码后可以直接编译下载。以前用Keil比较多但MDK商用授权问题现在查得严公司项目尽量都用正版工具CubeIDE是最省心的。调试器方面ST-Link V2便宜又好用几十块钱的也够折腾了。很多人喜欢用J-Link但STM32F1的SWD接口用ST-Link完全足够速度还稳定。J-Link的解锁功能确实强不过那是在芯片锁死后应急用的。2.2 两种固件库的差异与迁移坑STM32F1的固件开发方式大致经历了三个时代标准外设库Standard Peripheral Library、标准库的增强版基于寄存器封装、以及现在的HAL/LL库。标准外设库已经停止更新但网上存量教程最多很多老工程师习惯用标准库。HAL库是ST主推的配合CubeMX使用优点是代码生成方便、外设抽象统一缺点是层数多、效率略低、调试时单步跟踪经常跳进一堆维护代码。如果你是新项目我建议直接上HAL库。原因很简单CubeMX配置管脚和外设太方便时钟树、中断优先级、DMA请求都自动生成省掉大量查手册的时间。HAL库性能损耗确实存在但STM32F1本身主频只有72MHz如果对应使用场景响应要求不高影响不大。如果对性能敏感可以混用LL库或者直接用寄存器操作关键路径。迁移旧项目时最容易踩坑的是API差异。比如标准库的GPIO_Init()被HAL的HAL_GPIO_Init()替代参数结构体完全不同串口发送从USART_SendData()变成了HAL_UART_Transmit()后者是阻塞发送需要传入超时时间。我见过有人直接把标准库代码复制进HAL工程结果编译几百个错误。正确做法是先熟悉HAL的外设句柄机制再按模块逐个迁移。2.3 我的工程模板组织习惯我自己的工程模板分四层Application存放业务逻辑代码比如状态机、协议解析、算法BSP板级支持包针对具体板子的初始化函数Driver外设驱动比如OLED驱动、Flash驱动、传感器驱动Middleware操作系统、文件系统、协议栈等第三方组件这样分完之后同样的代码换一款板子只需要修改BSP层Application层基本不动。很多人把HAL生成的main.c写得巨长无比所有代码堆在一起功能一多就乱。CubeMX虽然可以按外设生成独立文件但业务逻辑还是要自己拆工程模板从第一天就要立好规矩。另外编译器的优化等级也建议从一开始就固定。Debug模式用-O0方便调试Release用-Os或-O2。如果调试时发现变量值被优化没了不要慌加volatile关键字或者去优化等级里关掉特定优化项。3. 核心外设的实战配置GPIO、定时器、串口、ADC3.1 GPIO配置的细节与误区GPIO是STM32F1最简单的部分但也是最常出问题的地方。首先要理解F1系列GPIO的模式和速度输入模式有浮空、上拉、下拉输出模式有开漏、推挽复用功能必须选择AFIO并在需要时使能AFIO时钟输出速度有2MHz、10MHz、50MHz三档很多人配置GPIO输出高速信号时不分青红皂白全选50MHz结果导致EMI变差、边沿过冲。实际上普通的LED、继电器控制2MHz就够用SPI时钟、PWM输出频率高才选50MHz。开漏输出常用于I2C和电平转换场景需要在外部加上拉电阻。如果直接用推挽输出去模拟I2C外部设备可能无法正确拉低总线这个问题排查起来非常隐蔽。还有个高频误区STM32F1的大多数引脚默认是浮空输入如果没有外部上下拉读取时会得到不确定电平。手册里很多GPIO默认复用为JTAG功能PA13、PA14、PA15、PB3、PB4如果你想把这些脚当普通IO用必须先重映射或关闭JTAG只保留SWD。具体操作是调用GPIO_PinRemapConfig()或者修改AFIO寄存器很多初学者卡在这一步卡了几天。3.2 定时器PWM与输入捕获的常见做法STM32F1的定时器分高级定时器TIM1/TIM8、通用定时器TIM2/3/4/5和基本定时器TIM6/TIM7。PWM输出最常用通用定时器很多应用不需要高级定时器的互补输出和刹车功能用TIM2/3/4就足够了。配置PWM时分频值PSC和自动重载值ARR是关键。比如要产生20kHz的PWM系统时钟72MHz先设PSC0那么ARR72000000/20000-13599。占空比由比较寄存器CCR决定CCR1800就是50%。这里提醒一下定时器计数是从0到ARR的所以计算频率时一定要减1很多人刚接触时总是差一个数。如果是电机控制一般还需要输入捕获来测量转速。比如用霍尔传感器输出脉冲把脉冲信号接入定时器的通道输入配置为上升沿捕获记录两次捕获的计数差。假设定时器计数频率为1MHz测得计数差为500那么脉冲周期就是500微秒转速就看具体每圈多少个脉冲换算。输入捕获最需要注意的是信号抖动硬件上要加RC滤波或施密特触发器软件上可以做两次捕获求差、丢弃异常值。3.3 串口通信中断接收与空闲中断串口是STM32F1项目里最常用的通信外设。很多人刚开始都用阻塞式HAL_UART_Transmit()发送、HAL_UART_Receive()接收这在简单交互场景没问题但一旦对方数据不按你的超时时间来程序就会卡在等待里。我的做法基本是发送使用中断发送或配合DMA发送不阻塞主循环接收开启UART接收中断数据逐个放入环形缓冲区解析主循环或RTOS任务中从缓冲区取数据做协议解析STM32F1的USART支持空闲中断可以很方便地判断一帧数据接收完成。通常配置在接收过程中使能IDLE中断当总线上空闲时触发这时读取接收计数就能知道这帧数据长度。HAL库对空闲中断的处理比较麻烦因为HAL的接收接口内部可能把空闲中断占用了。我的做法是在UART底层中断回调里直接判断UART_FLAG_IDLE然后手动读取数据长度并置事件标志。这个技巧在实际项目里非常管用尤其是处理Modbus、自定义协议这种变长帧的场景。还有一个容易忽略的坑串口中断优先级如果设置得太低在高优先级中断的服务函数里调用HAL_UART_Transmit阻塞发送可能会导致数据丢失或者卡死。我一般把串口中断设为中等优先级DMA传输完成中断再低一级。并且要确保中断服务函数里不要做复杂处理最多置标志位、拷贝数据。3.4 ADC多通道采集与DMA配合STM32F1的ADC是12位逐次逼近型F103系列大多是1个ADC模块有些型号有2个或更多最多支持16个外部通道。多通道采集最常见的做法是扫描模式DMA。配置好ADC的扫描顺序和采样时间然后启动DMA让ADC转换结果自动搬运到内存数组里CPU完全不用管转换完再通过DMA中断通知主程序处理。采样时间的设置要小心。ADC的采样时间可配置为1.5周期到239.5周期。如果信号源内阻较大采样时间太短会导致电容充电不足转换结果偏小。比如接一个10kΩ的分压电阻网络采样时间建议至少55.5周期否则高压侧读数会漂。另外ADC的参考电压Vref如果有噪声转换结果也会抖动简单板的Vref接的电源要加滤波电容最好用独立LDO给模拟部分供电。有一个项目中的经验STM32F1的ADC在连续转换模式下DMA传输如果配置成循环模式每次转换完成都会覆盖内存数组主循环读数据时可能会读到一半的数据导致高低字节不匹配。解决办法是使用DMA的双缓冲模式或者直接读取一次后立刻关DMA处理完再重新打开。也可以用两个数组交替接收通过标志位切换这样数据一致性就保证了。4. 项目落地中的常见问题与排查技巧4.1 启动文件与时钟配置问题STM32F1工程的启动文件必须选对根据芯片的Flash容量大小会有不同容量的启动文件比如startup_stm32f10x_ld.s、md.s、hd.s、xl.s。选错启动文件最典型的症状是程序能下载但上电后跑飞或者中断不进或者进入HardFault。原因很简单不同容量芯片的中断向量表和数据初始化代码在汇编里是针对不同存储布局的。换了芯片容量必须同步换启动文件。时钟配置是另一个高频崩溃点。STM32F1支持外部高速晶振HSE和内部高速RCHSI。很多开发板默认用8MHz晶振但有些板子用了25MHz或者12MHz如果CubeMX里不改成对应频率程序死等HSE就绪超时就会卡死。再一个就是前面提到的Flash等待周期72MHz主频必须设置2个等待周期并打开预取缓冲否则程序会出现随机崩溃。用标准库的人一般会在SystemInit()里调用SystemClock_Config()改了系统时钟后要注意RCC的配置是否跟你的晶振匹配。还有一点启动文件里默认的堆栈大小一般是0x400到0x800字节。如果你用了不少局部大数组或者递归调用比较深启动文件里的堆栈设置太小会导致栈溢出程序表现是“莫名的跑飞”和HardFault。我通常把堆栈改成0x1000左右反正STM32F1的SRAM大多在20KB以上多给一点保险。4.2 调试时的硬件坑软件写得没问题但板子不工作多半是硬件细节没到位。STM32F1的复位引脚NRST需要接上拉电容一般0.1μF到10μF都可以。如果复位电路参数不对芯片上电后可能一直处于复位状态或者上电复位不完全程序烧进去后跑了一次就死。BOOT0和BOOT1引脚的电平也要注意BOOT0默认下拉到GND如果被外部外设拉高了芯片就会进入系统存储器Bootloader模式导致用户程序不运行但下载却正常。这个坑特别容易发生在用ST-Link通过SWD下载时能检测到芯片能写Flash但一运行就跑进了Bootloader。电源去耦也很关键。STM32F1虽然电流不大但数字IO翻转时会有瞬态电流VDD和VSS之间我一般放100nF瓷片电容且靠近引脚。如果芯片附近有大电流电机或者继电器最好在电源入口加TVS管和磁珠否则复位、死机都是家常便饭。4.3 低功耗设计的简单优化很多手持设备或传感器节点需要低功耗STM32F1虽然不如F0/F4的低功耗系列那么极致但也能做到不错的水平。首先是时钟不用外部晶振的场合可以使用HSI唤醒更快。进入Stop模式前把不用的外设时钟全部关闭GPIO设置为模拟输入或者固定电平避免浮空输入造成的漏电流。RTC继续计时的话可以选外部32.768kHz晶振但在电池供电下要注意晶振驱动等级。代码层面不要在main循环里用HAL_Delay()这种忙等用定时器中断做任务调度空闲就进入休眠。STM32F1的WFI指令可以通过__WFI()调用关闭所有不必要外设后Sleep模式的电流能到毫安以下Stop模式可以到微安级。但进入Stop模式前要确保唤醒源配置好比如外部中断、RTC闹钟。很多人的坑是唤醒后时钟配置要重新初始化HAL库的HAL_RCC_DeInit()和SystemClock_Config()需要重新调用不然外设跑在不正确的时钟下数据就乱了。4.4 问题排查思路速查遇到项目出问题按顺序排查会快很多先看电源VDD电压对不对复位脚电平对不对有没有明显短路。再看时钟示波器量晶振引脚是否起振如果起振但频率不对检查负载电容和晶振匹配。看下载能否识别芯片能否擦除Flash如果SWD连接不上按住复位键再点下载有时候能把芯片锁解掉。看启动去掉所有外设最小系统LED点亮测试确认程序基本运行。最后加外设逐个模块初始化通过串口打印关键变量定位到是哪个外设导致挂起。这个流程听起来很简单但大部分同事找我排查问题时基本都是在第二步或者第五步才定位到。很多人一上来就怀疑代码逻辑其实硬件基础才是最容易出错的地方。5. 让STM32F1项目更稳的三个长期习惯5.1 版本管理从第一天开始STM32F1项目代码量大起来后如果没有Git真的会崩溃。CubeMX生成代码时会有自动生成的文件这些也要纳入版本管理。我个人的习惯是CubeMX生成的.ioc文件必须入库每次修改管脚或时钟配置最好提交信息里写清楚改了什么。不然团队成员更新代码后CubeMX配置和代码不一致编译能过但跑起来行为诡异。还有一点每个人可能用不同CubeMX版本建议统一版本避免.ioc文件冲突。5.2 统一错误处理与日志输出给串口加一个简单的日志模块用宏开关控制调试信息输出。比如#define LOG_DEBUG_ENABLE 1 #if LOG_DEBUG_ENABLE #define LOG_INFO(fmt, ...) printf([%s] fmt \r\n, __FUNCTION__, ##__VA_ARGS__) #else #define LOG_INFO(fmt, ...) #endif这样在调试阶段可以看到详细输出发布时关掉宏省去一条条删除。而且统一的错误处理宏比如断言、错误码记录能让你在产品跑到客户现场后再返回来查问题时省太多时间。STM32F1的USART重定向到printf时要注意Keil/AC6需要勾选MicroLIBCubeIDE需要重写fputc否则printf不工作。5.3 记录“异常现象笔记本”做嵌入式驱动的时间长了你会发现很多问题是“类风湿”式的看代码一切都对唯独某个批次芯片某个引脚不听话或者某种环境温度下偶尔复位。强烈建议每次调试出诡异问题把环境、代码版本、现象、最终原因记录下来。这个笔记本比任何培训都有价值。比如我以前记录过某型号晶振在低温下不起振换了两个负载电容就好了类似经验如果不记再过几个月遇到同样问题照样从头查一遍。最后分享一点个人的体会STM32F1系列被很多人看作老古董但它的稳定性和资料丰富程度至今依然是很多量产产品的可靠选择。做项目不要盲目追新把时间花在吃透一个平台比走马观花地试各种新芯片更能积累深度。这款芯片的上限远比大多数人想象中高从简单的开关控制到多任务产品级固件它都能扛得住。如果这篇文章里有一条能帮你少加一次班那就值了。

相关新闻

openclaw升级到v2026.6.6后报错,修复:把settings改到TaoToken

openclaw升级到v2026.6.6后报错,修复:把settings改到TaoToken

/* 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 5:58:30 阅读更多 →
5G SA语音异常掉落4G:EPS Fallback定位与优化实践

5G SA语音异常掉落4G:EPS Fallback定位与优化实践

/* 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 5:58:30 阅读更多 →
MySQL 1067错误排查指南:Windows服务启动失败原因与修复

MySQL 1067错误排查指南:Windows服务启动失败原因与修复

/* 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 5:58:30 阅读更多 →

最新新闻

MQTT从原理到实战:Broker搭建、QoS配置与客户端开发全攻略

MQTT从原理到实战:Broker搭建、QoS配置与客户端开发全攻略

1. 项目全貌解读:MQTT 服务、客户端、服务器端到底是什么关系会看到这样一个项目标题,说明你大概率已经进入了物联网或者消息推送相关领域。不管是做智能家居、设备数据采集、IM 消息推送,还是和后端服务器对接硬件设备,MQTT 几乎…

2026/10/12 6:40:53 阅读更多 →
TF Quant Finance 公共 API 全景:基于官方符号索引的模块地图与源码解读

TF Quant Finance 公共 API 全景:基于官方符号索引的模块地图与源码解读

金融科技科学计算 【免费下载链接】tf-quant-finance High-performance TensorFlow library for quantitative finance. 项目地址: https://gitcode.com/gh_mirrors/tf/tf-quant-finance 点击查看 免费下载 本篇指南以 api_docs/index.md(TF Quant Fina…

2026/10/12 6:40:53 阅读更多 →
S7-200 Smart双层密码保护:CPU原生加密与动态锁屏密码实现

S7-200 Smart双层密码保护:CPU原生加密与动态锁屏密码实现

设备商的朋友跟我吐槽过一件事:他们给客户做的一台绕线机,控制器用的就是西门子S7-200 Smart,交付时出于信任把CPU密码直接告诉了车间主任。结果半年后客户打电话过来,说设备参数被改得一塌糊涂,产品批量报废。人到现场…

2026/10/12 6:40:53 阅读更多 →
深度学习故障诊断入门:一维CNN处理振动信号全流程解析

深度学习故障诊断入门:一维CNN处理振动信号全流程解析

简介:面向深度学习故障诊断入门学习者,这份资源完整演示了从数据预处理、模型搭建到模型训练的全流程,可帮助快速掌握基于卷积神经网络等模型的故障识别方法。压缩包共57个文件,其中40个mat格式数据文件用于实验输入,1…

2026/10/12 6:40:53 阅读更多 →
基于微信小程序订餐管理系统:从设计到上线避坑全解析

基于微信小程序订餐管理系统:从设计到上线避坑全解析

做订餐管理系统这套选题,在每年的毕业设计和程序员练手项目里一直都属于“常青藤”级别的存在。你手里这个“基于微信小程序实现订餐管理系统”,说白了就是把线下餐厅的点餐、下单、支付、订单管理流程搬到小程序里,用户扫码即用、商家后台处…

2026/10/12 6:40:53 阅读更多 →
单细胞测序如何重塑转化医学:从肿瘤微环境到临床决策

单细胞测序如何重塑转化医学:从肿瘤微环境到临床决策

说实话,我最早接触单细胞测序时,觉得它不过是把RNA测序做得更精细一些罢了。真正深入转化医学项目后,才意识到这个认知完全低估了它。单细胞在今天的定位,已经不只是"看得更细"的工具,而是把临床决策的颗粒度…

2026/10/12 6:39:52 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战: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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →