STM32主从定时器实现任意相位差PWM输出配置详解
1. 项目概述与核心价值最近在做一个电机控制相关的项目需要生成多路相位、占空比和频率都能独立调节的PWM信号。用STM32的单个定时器输出多路同频PWM是基础操作但一旦涉及到多路信号之间要有精确的、可任意设定的相位差事情就变得有趣起来。比如在一些特殊的电源拓扑、多相电机驱动或者需要特定时序的通信模拟中这种需求很常见。我一开始想着用多个定时器主从同步的方式应该能搞定但在CubeMX里实际配置时发现关于相位调节的细节官方手册和很多教程都讲得比较模糊需要自己摸索和验证。经过一番折腾终于实现了基于STM32CubeMX和HAL库利用主从定时器配置输出频率、占空比以及任意相位可调的PWM。这不仅仅是配置几个参数更是对STM32定时器高级控制模式的一次深度理解。如果你也在为如何让两路PWM信号精确错开某个角度比如90度或120度而头疼这篇记录或许能给你提供一个清晰的思路和可复现的步骤。2. 核心思路与方案选型2.1 为什么需要主从定时器单个高级控制定时器如TIM1, TIM8可以输出多达6路互补PWM但它们通常共享同一个计数器和预分频器因此输出的所有通道PWM频率必然相同占空比可以独立设置但相位关系是固定的。对于TIM1通道1/2/3和通道1N/2N/3N之间可以设置死区但同组通道如CH1和CH2之间的相位差通常是0度或180度中心对齐模式下的互补关系无法实现一个任意值比如让CH2滞后CH1 30度。要实现任意相位差核心思想是让两个定时器以相同的频率运行但让它们的计数器在启动时有一个初始的偏移量这个偏移量就对应了相位差。同时为了保证它们长期运行的同步性避免因时钟微小差异累积导致相位漂移需要让一个定时器主定时器去同步另一个定时器从定时器。这就是STM32定时器的主从模式Master-Slave Mode的用武之地。2.2 主从定时器同步原理剖析STM32的定时器同步功能非常灵活。我们计划采用的方案是主定时器Master 负责产生基准时钟和触发信号。我们将其配置为PWM输出模式但它输出的PWM信号可能不作为最终驱动而是主要利用其更新事件UEV作为触发输出TRGO。从定时器Slave 负责产生最终需要的、具有特定相位的PWM信号。它被配置为“从模式”其启动、复位甚至时钟都可以受主定时器的触发信号控制。关键机制在于从定时器的**触发源Trigger Source和从模式Slave Mode**选择。触发源 我们选择主定时器的更新事件Update Event作为触发源。这意味着主定时器每次计数器溢出或产生更新时都会发送一个触发信号。从模式 这里我们选择“门控模式Gated Mode”或“触发模式Trigger Mode”。但为了实现相位偏移更常用且有效的是“复位模式Reset Mode”。当从定时器配置为复位模式且触发源选择为主定时器的更新事件时一旦从定时器接收到触发信号它的计数器就会立刻复位到0或初始化值然后重新开始计数。听起来相位差还是0别急这里有一个至关重要的寄存器从定时器的 TIMx-SMCR 寄存器中的 TRGI 触发输入极性选择位位性 TP和从定时器的计数器初始值。我们可以设置从定时器在接收到触发信号时不是简单地复位而是在触发信号到来时将自己的计数器装载为一个非零的值。但这个操作不是直接配置的需要通过另一种思路实现利用从定时器的“单脉冲模式One Pulse Mode”结合主从同步或者更直接地在从定时器使能后、主定时器启动前手动给从定时器的计数器CNT写入一个初始值。这个初始值就决定了相位差。相位差计算公式核心 假设定时器自动重装载值为ARR时钟频率为Fclk预分频器为PSC则PWM周期T (ARR1)*(PSC1)/Fclk。 一个计数周期对应的角度是360° / (ARR1)。 如果我们想让从定时器滞后主定时器PhaseDelay度那么从定时器计数器需要预设的初始值CNT_Init为CNT_Init (PhaseDelay / 360°) * (ARR 1)例如ARR999需要90度相位差则CNT_Init (90/360)*1000 250。我们的方案流程将是CubeMX配置主定时器产生PWM并使其更新事件作为TRGO输出。CubeMX配置从定时器为PWM输出模式并设置为“从模式”触发源选择主定时器的TRGO从模式选择“复位模式”。在代码中先启动从定时器HAL_TIM_PWM_Start但此时因为主定时器未启动没有触发信号从定时器计数器不会动或取决于配置。计算并手动设置从定时器的计数器CNT为相位差对应的值。最后启动主定时器。主定时器开始计数其第一次更新事件产生时会发出触发信号给从定时器。从定时器在复位模式下接收到此触发信号会将计数器复位并重新开始计数。但由于我们预先设置了CNT值这个“复位并重新开始”的过程实际上是从我们预设的CNT值开始计数从而实现了固定的相位滞后。注意 步骤3和4的顺序至关重要。必须先让从定时器进入“待命”状态并设置好相位偏移再由主定时器触发其开始同步运行。如果先启动主定时器相位关系就固定为0无法再调整。3. CubeMX图形化配置详解我们以STM32F407为例使用TIM1作为主定时器TIM8作为从定时器。目标是产生两路频率1kHz占空比50%且TIM8通道1输出的PWM滞后TIM1通道1输出PWM 90度的信号。3.1 主定时器TIM1配置时钟源 选择内部时钟Internal Clock。参数配置Prescaler (PSC - 预分频器) 假设系统时钟为168MHz我们目标PWM频率为1kHz。先设定ARR为一个方便计算的数比如999。则所需定时器时钟Ftim Fpwm * (ARR1) 1kHz * 1000 1MHz。预分频系数PSC Fclk / Ftim - 1 168MHz / 1MHz - 1 167。在CubeMX中填入167。Counter Period (ARR - 自动重装载值) 填入999。Counter Mode 选择向上计数Up。auto-reload preload 建议使能Enable这样对ARR的修改会在下次更新事件生效避免当前周期出现毛刺。PWM输出配置在通道选择中为Channel 1选择PWM Generation CH1。下方参数设置中Pulse 初始占空比设为500对应50%因为ARR999。CH Polarity 根据硬件需求选择高电平有效High或低电平有效Low。主从模式配置关键点击Parameter Settings选项卡旁边的Master/Slave Mode选项卡。Master/Slave Mode 选择Enable。Trigger Event Selection (TRGO) 选择Update Event。这意味着TIM1的每次更新事件都会在它的TRGO引脚上产生一个触发信号。这个信号将用于同步从定时器。3.2 从定时器TIM8配置时钟源 同样选择内部时钟。参数配置Prescaler (PSC)必须设置成和主定时器TIM1完全相同的值即167。这是保证两者计数频率一致的基础。Counter Period (ARR)必须设置成和主定时器TIM1完全相同的值即999。这是保证两者PWM周期一致的基础。Counter Mode 向上计数Up。auto-reload preload 使能Enable。PWM输出配置同样配置Channel 1为PWM Generation CH1。Pulse 设为50050%占空比。CH Polarity 设置与TIM1一致。从模式配置最关键的一步进入Master/Slave Mode选项卡。Slave Mode 选择Combined Reset Trigger Mode或Reset Mode。不同型号/版本的CubeMX选项可能略有不同其本质都是“复位模式”Reset Mode。当触发信号到来时从定时器的计数器会被复位。Trigger Source 选择ITR0。这里的ITRx需要查数据手册的定时器内部触发连接表。对于STM32F4TIM1的TRGO连接到内部触发线路ITR0可供TIM8使用。这个映射关系是芯片硬件固定的务必查证。例如在F4系列中TIM1是连接到ITR0TIM2连接到ITR1等等。一旦选择了正确的ITRx下面的Slave Mode选项通常会自动变为Reset Mode。3.3 GPIO与时钟树检查GPIO 分别为TIM1_CH1和TIM8_CH1配置对应的引脚为复用推挽输出模式并根据硬件设计决定是否使能内部上拉/下拉。时钟树 确保TIM1和TIM8的时钟源APB2 timer clocks频率一致都是168MHz。这是PWM频率计算准确的前提。4. 代码实现与相位调节逻辑CubeMX生成代码后我们需要在main.c的用户代码区添加关键操作。4.1 启动顺序与相位设置代码/* 用户变量定义 */ uint16_t phase_delay_degrees 90; // 期望的相位延迟单位度 uint32_t calculated_cnt_init; // 计算出的计数器初始值 /* 在定时器初始化完成之后启动PWM之前添加 */ /* 1. 计算相位差对应的计数器初始值 */ // 注意ARR是16位寄存器我们设置的是999但计算时要用 (ARR1) calculated_cnt_init (uint32_t)((float)phase_delay_degrees / 360.0f * (__HAL_TIM_GET_AUTORELOAD(htim8) 1)); // 确保值在有效范围内 if(calculated_cnt_init __HAL_TIM_GET_AUTORELOAD(htim8)) { calculated_cnt_init __HAL_TIM_GET_AUTORELOAD(htim8); } /* 2. 先启动从定时器TIM8的PWM输出但此时计数器因无触发而暂停或未同步 */ HAL_TIM_PWM_Start(htim8, TIM_CHANNEL_1); /* 3. 手动设置从定时器的计数器值为相位偏移量 */ __HAL_TIM_SET_COUNTER(htim8, calculated_cnt_init); /* 4. 最后启动主定时器TIM1*/ HAL_TIM_PWM_Start(htim8, TIM_CHANNEL_1);代码逻辑解读计算相位值 根据公式将角度转换为计数器值。使用__HAL_TIM_GET_AUTORELOAD宏获取实际的ARR值保证代码通用性。先启从机 调用HAL_TIM_PWM_Start启动TIM8。对于配置为复位从模式的定时器在接收到有效的触发信号前其计数器可能不开始计数取决于具体型号和模式或者独立运行但即将被复位。这一步是让从定时器进入工作状态等待触发。设置相位__HAL_TIM_SET_COUNTER是HAL库提供的宏用于直接写入计数器的值。这一步是实现任意相位调节的核心。我们强行将TIM8的计数器设置到“半路”上。后启主机 最后启动TIM1。TIM1开始从0计数当它计数到ARR999产生第一次更新事件时TRGO信号发出。TIM8接收到这个复位触发信号但其计数器当前值是calculated_cnt_init例如250触发信号会将其复位。由于是向上计数复位到0后TIM8从0开始计数。此时TIM1已经计数到了1000并回绕到0产生了更新事件接着从0开始它的第二个周期。而TIM8则从0开始它的第一个完整周期。因此TIM8的波形相比TIM1滞后了250个计数时钟即90度。实操心得 一定要在启动主定时器之前设置从定时器的CNT值。如果在启动之后设置可能会因为触发信号的随机性导致相位设置不稳定或失效。这个顺序是铁律。4.2 动态调节占空比与频率基于上述架构动态调节变得简单调节占空比 直接使用__HAL_TIM_SET_COMPARE(htim1, TIM_CHANNEL_1, new_pulse)和__HAL_TIM_SET_COMPARE(htim8, TIM_CHANNEL_1, new_pulse)即可分别调节两路PWM的占空比。它们是独立调节的。调节频率 需要同时改变主、从两个定时器的ARR和PSC值以保持相位关系的正确性。重要修改ARR/PSC时最好先停止主定时器输出修改并等待更新完成后再重新按照“先启从机-设相位-后启主机”的顺序启动。// 示例动态改变频率 uint32_t new_arr 1999; // 新ARR值 uint16_t new_psc 83; // 新PSC值 (假设新频率计算得出) // 停止主定时器 HAL_TIM_PWM_Stop(htim1, TIM_CHANNEL_1); // 更新主定时器周期和预分频 __HAL_TIM_SET_AUTORELOAD(htim1, new_arr); __HAL_TIM_SET_PRESCALER(htim1, new_psc); // 更新从定时器周期和预分频必须一致 __HAL_TIM_SET_AUTORELOAD(htim8, new_arr); __HAL_TIM_SET_PRESCALER(htim8, new_psc); // 重新计算新频率下的相位偏移计数器值 calculated_cnt_init (uint32_t)((float)phase_delay_degrees / 360.0f * (new_arr 1)); // 重新按照正确顺序启动 __HAL_TIM_SET_COUNTER(htim8, calculated_cnt_init); // 先设相位 HAL_TIM_PWM_Start(htim8, TIM_CHANNEL_1); // 再启从机 HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1); // 最后启主机动态调节相位 原理同设置相位。你可以在任何时候通过__HAL_TIM_SET_COUNTER(htim8, new_phase_cnt)来修改TIM8的计数器初始值。但要注意这个修改最好在从定时器计数器被触发复位后、下一个计数周期开始前的短暂窗口内进行以避免产生毛刺或不完整的PWM脉冲。一个更稳健的方法是在调节相位时短暂关闭从定时器输出修改CNT值再重新使能。5. 常见问题排查与调试技巧在实际操作中你可能会遇到以下问题5.1 问题1 两路PWM完全没有相位差或者相位差不是设定值。可能原因1 主从定时器内部触发连接ITRx选错。排查 仔细查阅你所使用的STM32型号的参考手册Reference Manual中的“定时器内部触发连接”表格。TIM1的TRGO不一定连接到你选择的ITRx上。这是最容易出错的地方。解决 在CubeMX的从定时器Trigger Source中选择正确的ITRx。可能原因2 启动顺序错误。排查 检查代码是否严格遵循了“启动从定时器PWM - 设置从定时器CNT - 启动主定时器PWM”的顺序。解决 调整代码顺序。可能原因3 从模式选择错误。排查 确保从定时器的Slave Mode是Reset Mode复位模式。如果选成Gated Mode门控模式从定时器的计数会受触发信号电平控制行为不同。解决 在CubeMX中重新配置。可能原因4 ARR或PSC值不一致。排查 检查主、从定时器的Prescaler和Counter Period是否完全一致。即使差1长期运行后也会导致相位漂移或频率差异。解决 在CubeMX和代码中确保两者完全同步。5.2 问题2 PWM输出有毛刺或异常脉冲。可能原因1 在计数器运行时修改了ARR/CNT等寄存器。排查 动态调节参数时是否在定时器运行时直接写入解决 对于ARR、PSC的修改务必在定时器停止或确保在更新事件发生时进行。HAL库的__HAL_TIM_SET_AUTORELOAD等宏在auto-reload preload使能时是安全的但最稳妥的方式还是先停止定时器再修改。对于CNT的修改调节相位风险较高建议在关闭输出或确保在安全时刻如更新事件后进行。可能原因2 死区时间冲突。排查 如果你的PWM用于驱动桥式电路并配置了死区时间Dead Time死区插入可能会影响边沿的精确位置。解决 测量不带死区的信号或者将相位差设置得远大于死区时间。5.3 问题3 使用逻辑分析仪或示波器测量相位差有微小抖动或误差。可能原因1 系统时钟抖动。排查 这是硬件层面的微小误差通常很小。可以测量多个周期的平均相位差。解决 使用更高精度的时钟源如外部晶振可以改善。可能原因2 代码执行时间带来的微小延迟。排查 在“设置CNT”和“启动主定时器”两条语句之间如果有中断发生可能会引入微秒级的延迟。解决 将设置相位和启动的代码段放在临界区禁用全局中断中执行确保时序绝对精确。__disable_irq(); // 禁用中断 __HAL_TIM_SET_COUNTER(htim8, calculated_cnt_init); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1); __enable_irq(); // 启用中断5.4 调试技巧实录先验证基础PWM 不要一开始就配置主从模式。先分别配置TIM1和TIM8为独立的PWM输出确保两路PWM都能单独正常产生频率、占空比可调。这是基础能排除GPIO、时钟、基本定时器配置的错误。使用CubeMX的“Pinout view” 在配置从模式触发源ITRx时可以点击芯片引脚图旁边的“Timers”标签查看定时器之间的内部连接示意图有助于理解ITR的连接关系。善用HAL库状态和错误句柄 在调试代码时可以检查htim1.State和htim8.State确保定时器处于正确的状态HAL_TIM_STATE_READY,HAL_TIM_STATE_BUSY等。示波器是关键 使用示波器的双通道测量功能并打开“测量-相位差”功能直观地验证结果。将触发源设为主PWM通道观察从PWM通道的延迟。6. 方案扩展与高级应用思考实现了基础的主从定时器任意相位PWM后这个框架可以扩展到更复杂的应用多路相位可调PWM 一个主定时器可以同步多个从定时器。例如TIM1作为主机同步TIM8、TIM2、TIM3等。每个从定时器都可以设置不同的CNT初始值从而实现多路之间具有不同相位差的PWM输出。这在多相电机如三相、五相驱动中非常有用。中心对齐模式下的相位控制 上述例子是边沿对齐模式向上计数。在中心对齐模式向上向下计数下相位计算会稍微复杂一些因为计数器会先向上再向下。此时相位偏移的设置和触发复位点的理解需要更仔细的分析但原理相通。与DMA结合实现复杂波形序列 如果需要产生的PWM相位、占空比按复杂规律动态变化可以将定时器的比较寄存器CCR与DMA连接。通过DMA搬运预先计算好的波形表到CCR寄存器结合主从同步可以产生任意形状的调制波形。高精度相位微调 对于ARR值很大的情况即定时器分辨率很高通过设置CNT值可以实现非常精细的相位调节精度可达360° / (ARR1)。这对于某些需要精密时序控制的应用如激光雷达、超声波阵列至关重要。踩过几次坑之后我深刻体会到STM32定时器的功能强大到超乎想象很多高级功能都藏在数据手册的细节里。主从模式配合计数器的手动干预打破了单个定时器输出通道间的相位锁定为硬件级的精确时序控制打开了新的大门。关键就在于理解“触发-复位-初始值”这个链条以及严格遵守配置和代码启动的顺序。下次如果你需要让两个PWM信号跳一支精确的“相位差之舞”不妨试试这个方案。

相关新闻

【GitHub】Bend:让 GPU 并行编程像写 Python 一样简单

【GitHub】Bend:让 GPU 并行编程像写 Python 一样简单

一个基于交互组合子(Interaction Combinators)的大规模并行高级编程语言深度解析 引言 2024 年,GitHub 上出现了一个令人瞩目的项目——Bend。它声称"感觉像 Python,但扩展性像 CUDA":开发者无需手动管理线…

2026/7/30 3:01:22阅读更多 →
2026降AI最有效方法:知网/Turnitin ai率怎么降?论文降ai这样做通过率100%

2026降AI最有效方法:知网/Turnitin ai率怎么降?论文降ai这样做通过率100%

一、论文高AI率的常见原因与严重后果 不少同学明明自己写的论文,却被检测出高AI率,核心原因主要有四类。一是模板被AI污染,网上下载的范文或模板本身就是AI生成,直接使用易触发检测;二是长期依赖AI辅助写作&#xff0c…

2026/7/30 2:59:21阅读更多 →
2026短视频营销服务商避坑指南:从全渠道布局到品效合一,一篇看懂如何选

2026短视频营销服务商避坑指南:从全渠道布局到品效合一,一篇看懂如何选

2026短视频营销服务商避坑指南:从全渠道布局到品效合一,一篇看懂如何选做短视频营销,最怕什么? 不是没预算,也不是没想法,而是面对市面上五花八门的服务商,不知道该怎么选。 很多品牌方、市场负…

2026/7/30 2:59:21阅读更多 →
OmniRoute爆火3万Star:一个本地网关统一管理Codex/Claude Code/Cursor

OmniRoute爆火3万Star:一个本地网关统一管理Codex/Claude Code/Cursor

AI编程最大的痛点已经不是模型不够强,而是模型太多、账号太散、额度太碎。OmniRoute用一个本地网关统一接管所有AI编程工具的模型调用,近一个月新增2万Star。一句话背景OmniRoute是可本地部署的AI编程网关。安装后,Codex、Claude Code、Curso…

2026/7/30 4:17:37阅读更多 →
AI助力高校教材编写,10分钟生成教材框架,内容连贯又专业!

AI助力高校教材编写,10分钟生成教材框架,内容连贯又专业!

刚开始编写教材的难题与AI工具的帮助 刚开始编写教材时,遇到的最大难题就是修改和完善的过程,简直让人崩溃!从头到尾仔细检查,一遍遍找出逻辑不通的地方和知识错误,需要耗费很多时间和精力。调整教材中一个章节的结构…

2026/7/30 4:17:37阅读更多 →
Linux内核RCU机制的进化:从经典RCU到SRCU到Tasks RCU的场景选择

Linux内核RCU机制的进化:从经典RCU到SRCU到Tasks RCU的场景选择

Linux内核RCU机制的进化:从经典RCU到SRCU到Tasks RCU的场景选择 摘要:RCU(Read-Copy-Update)是Linux内核中最重要的同步机制之一。本文深入剖析RCU机制的演进历程,对比经典RCU、SRCU和Tasks RCU的技术本质、实现原理与…

2026/7/30 4:17:37阅读更多 →
2026年7月个人IP定位5大觉醒点:从模糊到空心,你收到了几个?

2026年7月个人IP定位5大觉醒点:从模糊到空心,你收到了几个?

2026年的规则已经变了。不是慢慢变,是翻篇了。打开任何一个内容平台,相似的脸、相似的话、相似的标题。用户在刷屏中变得麻木,创作者在对比中陷入消耗。一位做了3个月小红书的朋友跟我说:"日更两个月,粉丝300。别…

2026/7/30 4:17:37阅读更多 →
2026年降AI率软件测评:免费额度+退款承诺+适配平台横评

2026年降AI率软件测评:免费额度+退款承诺+适配平台横评

2个实测免费的降AIGC率工具,顺利通过ai率查重! AI 检测本身就没有公开 算法 ,降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给,那风险太大了。万一AI率没有降下来,又不能退,少则几元多则几十。 对于学…

2026/7/30 4:17:37阅读更多 →
LVS(Linux Virtual Server)项目知识点总结

LVS(Linux Virtual Server)项目知识点总结

1. 什么是集群集群是一组相互独立的计算机,通过高速网络互联,对外表现为单一系统,协同完成特定任务。集群的核心目标是提升可用性、扩展性、性能,并降低单点故障风险。2. 集群分类根据功能目标,集群主要分为三类&#…

2026/7/30 4:15:36阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 [特殊字符]

3分钟解锁iOS应用自由:TrollInstallerX让你的iPhone摆脱安装限制 🚀 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 你是否曾经因为iOS系统的严格…

2026/7/30 0:00:58阅读更多 →
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:00:58阅读更多 →
Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/30 0:27:26阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →