STM32 FFT频谱分析实战:采样、窗函数与幅值标定指南
简介面向STM32F1单片机实现FFT的资源包适合嵌入式开发者和数字信号处理初学者系统讲解在Cortex-M3内核上完成快速傅里叶变换所需的算法原理、内存管理、中断定时触发、CMSIS-DSP库应用以及误差与低功耗优化等关键环节。压缩包共225个文件以h头文件与c源码为主包含工程配置、链接脚本、汇编启动文件及hex烧录文件等整体仅4.12MB结构清晰便于直接导入Keil或STM32CubeIDE学习。已有10172人学习下载。资料从底层寄存器到上层FFT算法均有覆盖并附有TFTLCD、ADC、TIM等外设驱动代码能帮助读者快速搭建实际采集与频域分析流程同时通过配套工程文件与编译产物辅助排查问题是一份可运行的完整单片机FFT实现方案非常适合课程设计或项目实战参考。1. 在 STM32 单片机上做 FFT先解决采样再谈算得快把 FFT 这颗“数学炮弹”塞进 STM32 单片机的工程里第一步往往打得人措手不及信号采集上去了算法也写了示波器上看起来却是一坨毛刺。这不是算得慢的问题——用 CMSIS-DSP 的arm_cfft_f32算 1024 点在带 FPU 的 M4 内核上通常也就是一个毫秒上下完全能支撑连续刷新真正把结果毁掉的是采样参数和窗函数先设错了。这篇笔记把 STM32 上做 FFT 从 ADC 配置、DMA 搬运、加窗、幅值换算到整机验证串成一环适合正在做频谱仪、振动监测或音频分析的开发者。看完之后你可以直接照着改工程参数而不是再从头摸索一遍。完整工程配置、窗系数生成脚本和标定模板文末会说明从哪里拿。2. 采样率、点数与窗函数先把谱面参数定死再写代码2.1 频率分辨率怎么算fs、N 与采样时间的关系FFT 的输入是 N 个采样点输出是 N 条谱线。第 k 条谱线对应的频率是k * fs / N相邻谱线之间的间隔就是频率分辨率f_res fs / N。如果两个信号频率差小于f_res它们会落在同一个频点及其相邻点上看起来就是一座山分不开。这一条公式决定了后面所有参数选择也是很多工程翻车的第一现场。所以写代码之前先问自己三个问题我要看多高的频率频率最密的地方要分辨到多少赫兹一次采样能等多久举例测 0 到 10kHz 的音频信号fs 至少要 20kHz若按 N1024则分辨率为 19.5Hz100Hz 和 120Hz 两个信号勉强能分开。如果想分辨 1HzN 就要到 20000这在单片机上不现实所以要么把 fs 降下来要么接受“只看一个窄带”的现实。在 STM32 上fs 不一定用得很高。很多传感器的模拟带宽本身远低于 ADC 最大采样率过采样反而会把高频噪声混叠到低频段。经验顺序是先看被测信号的最高有效频率留出 2 到 4 倍裕量定 fs然后用所需分辨率反推 N最后看 RAM 够不够。如果 N 超过 RAM优先降 fs而不是硬开一个大缓冲区。下面是三组常见搭配可以直接抄作业fs (Hz)N (点)f_res (Hz)单次采集时间 (ms)适用场景1000051219.5351.2快速粗略频谱1000010249.77102.4音频/振动通用4000040969.77102.420kHz 内窄带分析提示ADC 输入前最好加一个简单 RC 低通或者用运放做跟随防止高于奈奎斯特频率的噪声折叠进频带。这不是 FFT 步骤但没有它FFT 结果会变得不可信。2.2 加窗还是不加窗不同窗函数的选型逻辑FFT 默认把输入当做一个周期信号的完整周期来处理但实际采集极少恰好覆盖整数个信号周期截断首尾不连续频谱上就会在主峰两侧展开一长串“裙边”这就是频谱泄漏。泄漏的大小直接由窗函数决定。矩形窗就是不加窗主瓣最窄分辨率最高但旁瓣电平高泄漏明显。汉宁窗旁瓣衰减更快是通用分析里最常用的窗。汉明窗旁瓣更低但低频段的泄漏衰减不如汉宁。布莱克曼窗旁瓣最低但主瓣也最宽两个相近频率更难分开。做一般振动和音频分析汉宁窗起步就够如果信号本身是稀疏的窄带正弦用矩形窗先看全局再用汉宁窗精测也是常见做法。加窗是在时域把采样值乘以窗系数再送 FFT。代价是幅度会变低之后要做幅度恢复比如汉宁窗常用恢复系数 2。我一般先把窗系数预计算成const数组避免每次实时算 cos既省时间又省功耗。选择窗也不是越“高级”越好窄带分析用宽主瓣窗会把两个邻近频率糊成一个包具体选哪个下面这个表可以快速对照窗函数主瓣宽度旁瓣衰减适用场景矩形窗最窄最差频率间隔大的瞬态观察汉宁窗中等较好音频、振动通用汉明窗中等较好窄带通信信号布莱克曼窗最宽最好强旁瓣抑制、幅值精度优先2.3 反推参数的具体顺序三步定下 FFT 配置我的习惯是三步走。第一步估最高有效频率按它的 2 到 4 倍定 fs第二步定目标频率分辨率算出最小 N 并向上取 2 的幂第三步算采样时间T N / fs看应用是否能接受。如果 T 太长说明分辨率要求过高要么降采样率要么换更长的缓冲区否则就只能牺牲某个指标。这里还有一个容易栽的坑STM32 的 ADC 可以使用定时器触发来保证采样间隔精确而连续扫描模式做均匀采样虽然简单却容易在不同通道切换时引入抖动。如果只测一路信号建议配置成单通道连续转换加 DMA 循环如果多通道扫描每个通道的等效采样率会按通道数均分算 f_res 时要用“实际单通道采样率”而不是 ADC 总吞吐率。3. ADCDMA 采集与 DSP 库调用把 FFT 跑成一条完整流水线3.1 CubeMX 里先配好 ADC 与 DMA搬运数据别占 CPU在 CubeMX 里把 ADC 打开开启连续转换和 DMA 循环模式。DMA 数据宽度选 Half Word16 位因为 12 位 ADC 结果右对齐时是 0 到 4095正好落在uint16_t里。采样时间按信号源阻抗来定低阻抗信号用短采样时间就能稳住高阻抗信号比如大阻值分压网络必须用更长的采样时间否则 ADC 内部采样电容没充满转换结果会偏低。这个参数在 FFT 里很容易被忽略但它直接决定时域波形是否可信。下面是最小启动代码把 ADC 的 DMA 循环搬起来#include adc.h #include dma.h #include arm_math.h #define FFT_LEN 1024 uint16_t adc_buf[FFT_LEN]; void adc_fft_start(void) { // 启动 ADC 循环 DMA自动连续搬运 FFT_LEN 个点 HAL_ADC_Start_DMA(hadc1, (uint32_t *)adc_buf, FFT_LEN); }HAL_ADC_Start_DMA的第三个参数是点数而不是字节数这个最容易写错写错后 DMA 会搬越界。HAL 库内部会按照 DMA 数据宽度自动计算要搬运的次数所以这里填FFT_LEN就好。启动之后 CPU 就不需要管数据搬运了等一轮数据凑齐再去处理。3.2 加窗、去直流与 FFT 调用一段能直接抄的核心代码下面这段是完整的一帧处理逻辑从 ADC 缓冲区取原始数据减去直流均值乘汉宁窗调用arm_cfft_f32做 1024 点复数 FFT再取模得到幅度谱。注意arm_cfft_f32要求数据按“实部、虚部、实部、虚部”交错存放所以输入数组长度是FFT_LEN * 2。#define FS 10000.0f static float32_t fft_input[FFT_LEN * 2]; static float32_t fft_mag[FFT_LEN]; static float32_t hann[FFT_LEN]; // 预生成汉宁窗系数只算一次 static void make_hann(void) { for (uint32_t i 0; i FFT_LEN; i) { hann[i] 0.5f * (1.0f - cosf(2.0f * 3.14159265f * i / (FFT_LEN - 1))); } } void process_frame(uint16_t *adc_raw) { float32_t avg 0.0f; // 先算时域均值用于去直流 for (uint32_t i 0; i FFT_LEN; i) { avg adc_raw[i]; } avg / FFT_LEN; // 去直流、按参考电压换算、加窗 for (uint32_t i 0; i FFT_LEN; i) { float32_t v (adc_raw[i] - avg) * (3.3f / 4096.0f); fft_input[2 * i] v * hann[i]; // 实部 fft_input[2 * i 1] 0.0f; // 虚部 } // 正向 FFTifftFlag0位反序交给库内部处理 arm_cfft_f32(arm_cfft_sR_f32_len1024, fft_input, 0, 1); // 求各频点复数模值 arm_cmplx_mag_f32(fft_input, fft_mag, FFT_LEN); // 单边谱幅值换算0 和 N/2 点不乘 2其余点乘 2/N for (uint32_t i 1; i FFT_LEN / 2; i) { float32_t freq i * FS / FFT_LEN; float32_t amp fft_mag[i] * (2.0f / FFT_LEN); // 此时 freq 是真实频率amp 是真实幅值可以输出或做阈值判断 } }这里几个参数要解释清楚。arm_cfft_f32的第一个参数是 FFT 实例结构体名字里带len1024表示支持 1024 点第二个参数是交错存放的浮点数组第三个参数ifftFlag填 0 表示正向变换第四个参数bitReverseFlag填 1 表示输入是自然顺序库内部会自己做位反序。老版本库函数叫arm_cfft_radix4_f32如果拿到的是老例程就搜索这个函数名逻辑一致。幅值换算有几个边界。第 0 点是直流分量除以 N 即可第 N/2 点是奈奎斯特频率也不用乘 2中间点才是单边谱需要乘 2 再除以 N。由于加了汉宁窗能量有衰减工程上常用一个窗恢复系数做补偿习惯上直接在乘系数时补回来具体数值可以先从标准表里查再用信号发生器标定。提示去直流很关键。如果 ADC 输入带有 2.5V 的偏置不去直流0Hz 会是一个巨大的尖峰把附近的低频谱线全部淹没。3.3 从幅度谱到物理量参考电压与分压比一起折算12 位 ADC 的结果 0 到 4095 对应 0 到参考电压。参考电压标称 3.3V但 PCB 上的基准可能实际是 3.29V这种偏差在频域上表现为所有谱线按比例缩放频率位置不受影响。更稳的做法是实测一个已知电压反推参考电压再用它参与换算。如果信号经过电阻分压还要把分压比乘回去否则算出来的幅值会比真实值小一截。4. FFT 实战避坑五条属实用示波器反推出来的经验4.1 频谱泄漏主峰旁边出现对称“裙边”现象给一个单一频率的正弦波FFT 结果却在主峰两侧出现一长串快速下降的旁瓣而且两侧对称。原因采集窗口没有覆盖整数个信号周期截断产生的频谱泄漏在时域表现为首尾不连续。解决加窗最常用的是汉宁窗先乘窗系数再送 FFT。如果只测窄带正弦泄漏最容易暴露宽频噪声反而看不出明显旁瓣所以验证是否泄漏要用纯正弦信号而且要保证信号频率尽量稳定。4.2 分辨率不够两个相近频率合成一个宽包现象输入两个相隔很远的频率没问题但相隔 30Hz 的两个信号幅度谱上看只有一个胖峰。原因fs / N决定了真实分辨率当频率间隔接近或小于f_res时无法区分如果又用了主瓣更宽的窗情况更糟。解决先降低 fs再尝试增加 N二楼办法是补零 FFT 做插值。但补零只是把谱线画得更密不会让挨着的两个峰变独立这是原理决定的不要指望靠补零突破物理极限。4.3 DMA 数据错乱波形中间跳一格现象连续跑几秒后恢复出来的时域波形在前半段正常、后半段有毛刺或者隔一段时间重复出现同一段数据。原因用了循环 DMA但主循环在处理上一帧时DMA 已经把新采样写进同一个缓冲区新旧数据混在一起。解决用双缓冲乒乓缓冲DMA 半传输完成中断和传输完成中断交替把数据交给处理函数。第 5 章会给出具体实现。4.4 DSP 库编译链接失败arm_math.h 找不到现象工程编译时报错找不到arm_math.h或者链接时报一堆未定义符号。原因CMSIS-DSP 的源码路径没加进编译器搜索路径或者没有定义与内核对应的宏。解决在预处理器定义里加ARM_MATH_CM4M4、ARM_MATH_CM7M7或ARM_MATH_CM3M3再把包含arm_math.h的目录加入 include 路径最后链接对应的库文件。不同工具链的库名不一样不要照抄网络命令直接看工程配置里 DSP 库的路径和宏。4.5 0Hz 巨峰淹没低频信号现象FFT 结果第一个点数值巨大画图时其他频点都被压扁甚至看不到 100Hz 以下的谱线。原因ADC 输入普遍自带直流偏置单电源供电时尤其明显。解决在 FFT 前先减均值也就是代码里的avg计算这一步。如果硬件上已经是交流耦合也要确认耦合电容确实隔离了直流否则看不到低频是硬件先砍掉了信号不是 FFT 的锅。5. 从单帧 FFT 到实时频谱仪双缓冲与串口帧的工程做法5.1 双缓冲DMA 边采边算的正确姿势单块缓冲的缺点是采集 1024 点期间能等但处理这一帧时新的数据已经进来了处理完再采集已经晚了几拍实时性差。乒乓缓冲的思路是准备两块同样大小的缓冲区DMA 只在两块之间交替写入。半传输完成时前半块数据已经就绪全传输完成时后半块数据就绪。CPU 和 DMA 交替工作谁也不用等谁。static uint16_t adc_buf_a[FFT_LEN]; static uint16_t adc_buf_b[FFT_LEN]; static volatile uint8_t frame_ready 0; void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc) { // 前半块采集完成 if (hadc-Instance ADC1) { frame_ready 1; // 主循环里处理 adc_buf_a } } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { // 后半块采集完成 if (hadc-Instance ADC1) { frame_ready 2; // 主循环里处理 adc_buf_b } }回调里只置标志绝对不要直接跑 FFT 或者串口发送否则会把中断占住DMA 回调时序全乱。主循环检测到frame_ready后把对应缓冲区地址传给process_frame处理完马上清标志。这个模式在音频采集里非常成熟做实时频谱显示时几乎必用。5.2 控制计算量重叠率与刷新率的权衡FFT 本身算得快但加上去直流、加窗、取模和串口输出整条流水线还是需要时间。常见做法是把 DMA 缓冲设计成 FFT 长度的整数倍比如 4096 点分成 4 段每积累 1024 点就做一次 FFT。这样频谱的刷新率是“整块采集再算”模式的 4 倍用户体验更像实时分析仪。重叠率是另一个可调参数。50% 重叠可以让频谱变化更平滑代价是 CPU 负载增加约一倍。低主频芯片上建议先设成 0用调试器看主循环占用率再决定要不要加重叠。还有一点如果用的 STM32 是 Cortex-M3 内核没有硬件 FPU浮点 FFT 会很费建议改用arm_cfft_q15之类的定点版本速度能明显提升但输入数据要先做 Q15 格式转换。5.3 串口输出帧给上位机画频谱调试时最常见的需求是把频谱发出来。建议只发单边谱的 N/2 个点每点一个float32_t再带一个简单帧头方便上位机对齐。帧格式不用复杂只要稳定就行字段长度说明帧头2 字节固定0xAA 0x55数据长度2 字节后面的字节数幅度谱len * 4字节float32_t数组void send_spec_to_uart(float32_t *mag, uint16_t len) { uint8_t frame[4]; frame[0] 0xAA; frame[1] 0x55; frame[2] (uint8_t)(len 8); frame[3] (uint8_t)(len 0xFF); // 用 DMA 连续发送避免 CPU 阻塞太久 HAL_UART_Transmit_DMA(huart1, frame, 4); while (huart1.gState ! HAL_UART_STATE_READY); // 等上一笔发完 HAL_UART_Transmit_DMA(huart1, (uint8_t *)mag, len * 4); }HAL_UART_Transmit_DMA同一时刻最好只进行一笔传输否则要排队。上面代码用while等状态简单但可靠。连续发送大量浮点数据时为了保证调试不卡顿可以把len限制在 512 点以内也就是只发 0 到 512 频点人眼也看不过来更多谱线。6. 花十分钟给 FFT 做标定频点、幅值、线性三关都要过标定的核心是确认 FFT 结果可信。需要一台能输出定频、定幅正弦波的信号发生器或者用另一块 STM32 的 DAC 生成正弦波。先把被测信号接进 ADC 引脚量程内选一个值比如 1V 峰峰值。设 fs4096N10241kHz 正弦对应的理论 bin 是1000 * 1024 / 4096 250。如果峰出现在 bin 249 或 251说明 fs 算错或者信号频率本身有偏差如果峰位是 249.5 这种半包现象多半是同步采样没对齐加窗后主瓣会变宽但峰值中心应该仍接近 250。幅度标定不能在单个点做因为 ADC 满量程处和非满量程处的线性度可能不一样。我的做法是在半量程测一次满量程处再测一次中间取两三个点连成一条有斜率的直线。偏差规律很直接满量程差得多查参考电压和分压系数低幅值差得多查窗恢复系数和噪声基底也可能是时域均值减得不够干净。调完幅值再来一次快速线性验证同一频率下输入幅度从 0.2V 到 1.0V 每 0.2V 测一次记录 FFT 算出的幅度。理论上应该是一条直线斜率是 1。如果低端明显往下弯大概率是 ADC 在小信号下有效位数不足或者信号源本身带载能力差。前几年做一个电机振动监测项目FFT 谱线低频段一直有莫名凸起查了整整一下午最后发现是 ADC 采样时间配成了最短档而输入信号经过了一大串分压电阻采样电容根本没充满导致时域波形整体失真。从那以后我每次拿到新板子跑 FFT都会先做一遍这个十分钟标定再敢放真实数据已经养成了习惯。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

共享内存FIFO:信号量+环形缓冲实现进程间高频通信

共享内存FIFO:信号量+环形缓冲实现进程间高频通信

简介:ShmFifo源代码C版是一份聚焦共享内存与信号量协同工作的进程间通信示例,适合正在学习Linux IPC机制、需要实现多进程高效数据交换的开发者。资源由C语言过程调用版本改造而来,把一块共享内存与互斥、满、空三个信号量封装成C类&#xff…

2026/10/16 7:57:15 阅读更多 →
共享内存与信号量:C++跨进程FIFO队列源码深度解析

共享内存与信号量:C++跨进程FIFO队列源码深度解析

简介:面向系统编程学习者与 Linux 环境开发者,这份 C 版 ShmFifo 源码包演示了共享内存与信号量的结合实践:将一块共享内存和 mutex、full、empty 三个信号量封装为 ShmFifo 类,并提供写入、读取、释放与测试代码,适合…

2026/10/17 9:52:40 阅读更多 →
STP生成树协议全解析:从二层环路广播风暴到RSTP配置实战

STP生成树协议全解析:从二层环路广播风暴到RSTP配置实战

做网工这行,谁还没被广播风暴折腾过几回?半夜机房值班,一个环路能把整栋楼业务全部打断,交换机CPU顶到99%,所有的灯狂闪,人还没走到机柜跟前就已经猜到大概了——又是二层环路。我之前在好多个维护项目里都…

2026/10/16 7:56:15 阅读更多 →

最新新闻

机器学习入门:从学习范式到反向传播的核心概念全解析

机器学习入门:从学习范式到反向传播的核心概念全解析

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

2026/10/17 9:54:48 阅读更多 →
Vue小白入门:一个HTML文件跑通响应式交互

Vue小白入门:一个HTML文件跑通响应式交互

简介:本资源是一份专为零基础初学者设计的 Vue 框架入门教程,面向前端开发新人、转行学习者及高校计算机相关专业学生,系统解决“Vue 是什么、怎么搭环境、如何写第一个应用、何时用生命周期钩子”四大核心问题。内容覆盖 Vue 渐进式特性、CD…

2026/10/17 9:54:48 阅读更多 →
ArcGIS Engine开发核心:ICommand与ITool接口实战解析

ArcGIS Engine开发核心:ICommand与ITool接口实战解析

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

2026/10/17 9:54:48 阅读更多 →
树莓派扩展PWM控制舵机:PCA9685接线与驱动实战指南

树莓派扩展PWM控制舵机:PCA9685接线与驱动实战指南

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

2026/10/17 9:54:48 阅读更多 →
Swagger注解不生效?版本冲突到配置缺失的完整排查指南

Swagger注解不生效?版本冲突到配置缺失的完整排查指南

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

2026/10/17 9:54:48 阅读更多 →
AI拉低攻击成本后,中小企业如何重新评估安全防线与防御策略

AI拉低攻击成本后,中小企业如何重新评估安全防线与防御策略

1. 当攻击成本被AI拉低,安全防线该怎么重新算账最近圈子里讨论比较多的一份报告,来自Anthropic的安全研究团队。标题翻译过来大概意思是:AI可能让更多公司变得“值得被攻击”。这句话乍看有点绕,但做过企业安全的人一眼就能品出味…

2026/10/17 9:53:48 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →