新闻详情

新闻详情

首页 / 资讯中心 / 详情

DRV8818PWPR+PIC32MX460F512L步进电机驱动实战解析

发布时间:2026/10/3 12:28:18来源:尧图网络
DRV8818PWPR+PIC32MX460F512L步进电机驱动实战解析
1. 写在前面为什么我会盯上这颗驱动芯片和这款MCU做工业和机器人设备的人应该都有体会步进电机这东西看着简单真正要想跑得稳、力气足、不丢步、不发烫难度全在驱动器与主控的配合上。我去年在做一台四轴桌面型装配机械臂的时候被电机噪声和高温困扰了将近三周后来整套方案推倒重来换成了DRV8818PWPR驱动芯片加PIC32MX460F512L微控制器才真正把问题解决。这篇文章就把我在这套组合上走过的路、踩过的坑、调通的参数原原本本分享出来。先说结论这套组合特别适合工业小型自动化设备、机器人关节、分度台、检测平台这类需要多轴独立控制、但又不方便上伺服驱动器的场景。DRV8818PWPR 的优势是内置 1/32 微步进索引器、峰值电流能到 2.5A、供电电压范围宽8.2V 到 60V而且衰减模式可调对电流噪声和振动抑制有实质帮助PIC32MX460F512L 的优势是主频 80MHz、512KB Flash、64KB RAM外设丰富多组定时器和 UART完全可以一个芯片同时管多轴步进电机还能兼顾限位开关、编码器、通信协议这些活。如果你手里拿的是 Arduino 加 A4988 这种入门组合那你读完这篇文章会发现同样是一颗步进电机工业级的驱动逻辑和决心完全不一样。下面我按实际做项目的顺序来讲先掰扯为什么选型再讲电路板怎么画然后进入最核心的固件控制逻辑最后聊调参和可靠性问题。2. 选型逻辑DRV8818PWPR 与 PIC32MX460F512L 的组合凭什么能打2.1 驱动芯片DRV8818PWPR 到底解决了什么痛点先聊聊双极步进电机的控制本质。一个双极电机就是两组线圈要让转子平滑转动本质上就是让两组线圈里的电流按正弦规律错开 90 度电角度。你在真实项目里要解决的问题有三个第一怎么快速切换 H 桥的开关状态第二怎么保证电流大小精确稳定第三怎么让电流波形足够平滑减小振动和噪声。DRV8818PWPR 这颗器件有意思的地方在于它把上面三件事集成了大半。它不是像 A4988 那种把细分逻辑做在外部控制端的方案而是内部自带微步进索引器。你只需要给它 STEP 脉冲、DIR 方向和微步模式选择它自己就能按 1/32 微步输出两相正弦电流。这对主控来说太省事了因为主控根本不需要实时算正弦表不需要在中断里高速翻转两路 PWM只需要按约定频率发脉冲。另外一个容易被忽略的点是它的衰减模式。DRV8818 支持慢衰、快衰和混合衰减模式选择用 DECAY 引脚电平控制。这个参数直接影响电流过零点的平滑程度和电流纹波。我在机器人关节上实测下来混合衰减模式下电机运行噪声比固定快衰模式低了明显一截尤其是在低速段。这个后面调参篇我细讲。供电范围宽也是个实用价值。有的设备现场电源系统是 24V 的PLC柜有的是 48V 的伺服总线转出来的DRV8818 标称 8.2V 到 60V意味着同一种驱动板能覆盖不同电压等级的工位不用为每个项目重新画板。再加上峰值 2.5A 电流市面上常见的 57 步进电机、60 步进电机基本都能带动86 电机轻负载也能凑合覆盖面很广。2.2 主控PIC32MX460F512L 并不是随便选的步进电机控制大部分活儿其实都压在定时器上。你要发送 STEP 脉冲频率就得精确多轴联动时每根轴的脉冲频率得独立可调互相还不能干扰。PIC32MX460F512L 上的 5 个 16 位定时器和 4 个 32 位定时器在这种场景下特别舒服每根轴分配一个定时器自己做自己的脉冲频率更新互不牵扯。再说运行资源。它 80MHz 主频虽然放在今天不算高但在步进电机控制这个场景里那是绰绰有余。真正消耗 CPU 的往往是通信、路径规划、插补运算这些活比如机器人里要做直线插补、圆弧插补每一毫秒要算一次坐标Flash 里又要存运动参数表。512KB Flash 和 64KB RAM 在这个量级下足够宽裕。也就是说你把它当多轴步进控制器用剩下的资源还能再跑一套 Modbus RTU 从站协议栈或者 EtherCAT 从站代码这个我实际验证过跑得动。外设配置上还有一个细节值得提PIC32MX460F512L 的 I/O 引脚有 5V 耐压能力。这在工业环境里非常关键因为有的时候传感器、限位开关、旧设备信号线是 5V 或 12V 电平如果主控引脚不耐压一个误接线直接烧芯片。我用它接 12V 光耦输出信号的时候加个分压电阻就能直接读不用额外做电平转换芯片省了不少板面积。2.3 两者的分工边界我把这套架构里各器件的工作边界画了一条清晰的线职责谁来完成说明产生 STEP 脉冲频率PIC32 定时器定时器匹配比较翻转引脚输出 PWM 方波方向逻辑PIC32 GPIO对应 DIR 引脚电平低电平反转方向微步细分模式选择PIC32 GPIOM1/M2 引脚组合确定 1、1/2、1/4、1/8、1/16、1/32电流正弦分配DRV8818 内部索引器自动切换 H 桥电流大小钳制DRV8818 内部比较器VREF 与 ISENSE 电阻决定故障保护DRV8818 nFAULT过流、过温输出低电平回传给 MCU这条分界线想清楚之后写代码就简单了。主控不碰 PWM 正弦输出只关心发多少频率的脉冲剩下全都交给驱动芯片。这正是整个系统的稳定性来源。3. 硬件电路设计的那些关键细节3.1 供电架构与去耦电容给 DRV8818 供电的电压VM和逻辑电压要分开处理。我的习惯是 VM 进来先过一个大容量电解电容比如 100uF/100V再并联两个 0.1uF 的陶瓷电容一个靠近芯片 VM 引脚一个靠近 GND 引脚。为什么要这么干因为步进电机换相瞬间电流变化率极高如果电源内阻大、储能电容不够VM 电压会产生剧烈跌落轻则力矩下降重则触发芯片的欠压保护。PIC32MX460F512L 这边则需要 3.3V 供电。我一般是直接从稳定的 3.3V LDO 取电不在驱动板上再放一路稳压。因为驱动板离主控板通常很近如果又是开关降压又引入纹波反而会影响 ADC 采样和定时器时钟的稳定性。主控的 VDD 引脚每个都放一个 0.1uF 电容靠近引脚放置这个不能省。3.2 引脚连接要点我整理一份我实际使用的连接对照表你照着接基本不会有问题DRV8818 引脚作用连接到 PIC32 哪个引脚备注STEP步进脉冲输入定时器输出引脚如 OC1/RPB15上升沿触发步进DIR方向控制任意 GPIO如 RA0低电平正转M1/M2微步模式选择两个 GPIO11 为 1/32 微步nENBL使能控制GPIO如 RA1低电平使能高电平让电机自由DECAY衰减模式选择通过 10k 电阻接 VM或直接接 GPIO模式选择对应具体值VREF电流基准分压电阻网络设定目标电流ISENSE电流采样采样电阻到 GND计算峰值的依据nFAULT故障输出任意 GPIO 中断输入低电平有效nHOME可不用悬空或上拉索引器归零信号外部索引器可用重点提醒一下 nENBL。我在最初版电路里把 nENBL 直接接地想着反正一直要工作省一个控制脚。结果后来发现一个问题调试时电机没法完全释放手动盘不动轴极为别扭。改成 GPIO 控制之后问题消失而且省电效果也很可观——电机不工作时把输出关掉驱动的功耗几乎降为静态值。3.3 电流限制电阻的计算这一步算错整个系统白干DRV8818 的电流钳制机制是这样设计的芯片内部有一个比较器ISENSE 引脚电压超过 VREF 引脚电压时H 桥关闭输出让电流衰减。所以目标峰值电流与 VREF、ISENSE 电阻的关系是ITRIP VREF / (5 × RISENSE)这个公式要注意等号右边那个系数 5 是 DRV8818 内部电流检测放大倍数跟别的芯片不一定一样你换器件时必须查数据手册。我用的 57 步进电机额定电流 2.0A留出 15% 余量目标电流设为 2.3A。VREF 由分压电阻从 3.3V 获得我取 VREF 1.2V。1.2 / (5 × RISENSE) 2.3 → RISENSE 1.2 / 11.5 ≈ 0.104Ω实际取标准值 0.1Ω/1W 精密电阻。这样实际电流大约 2.4A可以接受。这里有个实操细节容易忽略采样电阻必须用功率电阻至少 1W最好是 2W。因为电流是真正的功率流过不是信号级的微电流普通贴片 0402 电阻用不了多久就烧到开裂。我第一次做原型板时为了省事用了普通 0805 0.1Ω结果连续高负载跑了十几分钟电阻直接发黄吓出一身冷汗。3.4 PCB 布局的核心要点驱动板的 PCB 布局有几个隐藏雷区。第一VM 走线和 GND 回流路径要尽量短而宽最好铺铜第二ISENSE 电阻到芯片 ISENSE 引脚的走线要短别跟功率走线缠在一起否则采样噪声会影响电流精度第三DRV8818 的数据手册里要求底部散热焊盘必须焊接到地平面这个很重要——芯片的主要散热路径是底部焊盘如果不接地或者接地面积太小热保护会频繁触发。我在第一版板子上的教训就是散热焊盘只用了四个过孔引出没大面积铺铜连接结果 57 电机全速跑半小时后 nFAULT 拉低查了半天才发现是热保护。后来重新铺了铜板问题消失。这个经验分享给大家真的别省。4. 固件核心逻辑PIC32 怎么把电机跑得又稳又准4.1 定时器脉冲发生与频率换算先明确一个基本换算关系。步进电机的机械角度由脉冲数决定电机内部 200 步/圈加上驱动器的 1/32 微步细分也就是一圈需要 200 × 32 6400 个 STEP 脉冲。SPEED 的物理含义是每秒的脉冲数PPS它对应到电机转速转速(rpm) PPS × 60 / 6400比如你要 60rpm那就是 60 × 6400 / 60 6400PPS。这个换算关系贯穿整个代码实现必须先建立起来。PIC32 上产生 STEP 脉冲我用 Output Compare 模块的 PWM 模式比较匹配功能。关键代码逻辑这样写// 以 Timer2 作为时基OC1 输出 STEP 脉冲 // 系统时钟 80MHz预分频 1:1 void StepTimer_Init(uint32_t pps) { uint32_t period (80000000 / pps) - 1; T2CON 0x8000; // 开启 Timer2预分频 1:1 PR2 period; OC1CON 0x0006; // PWM 模式比较匹配输出 OC1R period 1; // 50% 占空比一周期翻转电平 OC1RS period 1; OC1CON | 0x8000; }这里 50% 占空比直接用 period 一半设置实际跑出来方波非常干净DRV8818 在 STEP 上升沿触发步进所以一个周期的上升沿和下降沿各触发一次步进最终两倍脉冲频率。有人会在这个地方算错导致实际速度是设定值的两倍。我用示波器实测验证过这种 50% 占空比分频逻辑PR2 设定 10000 个计数OC1R 设 5000实际输出的 STEP 频率是 80MHz/10000 × 2 16kHz而不是 8kHz。注意这个 2 倍关系。4.2 微步进模式选择与方向控制微步模式的选择逻辑比较简单M1/M2 引脚电平组合对应不同细分。我把常用配置固化在结构体里typedef struct { uint32_t pps; int8_t direction; } StepAxis_Config; void Stepper_SetMicroStep(uint8_t mode) { switch(mode) { case 32: M1_GPIO 1; M2_GPIO 1; // 1/32 微步 break; case 16: M1_GPIO 0; M2_GPIO 1; // 1/16 微步 break; case 8: M1_GPIO 1; M2_GPIO 0; // 1/8 微步 break; case 1: M1_GPIO 0; M2_GPIO 0; // 全步进 break; } }在实际运动控制里微步细分与运动精度息息相关。我举一个实际场景一个旋转分度台要求最小定位分辨率 0.05°用 200 步电机加 1/32 细分一步的角度是 360° / 6400 0.05625°勉强满足。如果你想更高精度可以提高到 1/32 微步再加齿轮减速或者干脆换编码器闭环。这个逻辑在选型时要提前算清不要跑完代码才发现精度不够。方向控制就简单了DIR 引脚电平翻转即可void Stepper_SetDirection(int8_t dir) { DIR_GPIO (dir 0) ? 0 : 1; }4.3 加减速策略为什么不能直接上全速新手最容易犯的错误就是一启动就把 STEP 频率设在目标值。步进电机一旦负载惯量大STEP 频率突变会在瞬间丢失同步表现为电机嗡嗡一声然后卡住。要避免丢步速度曲线必须有一个渐变的斜坡。工业上最常用是梯形加减速也就是起步频率较低中间按固定加速度增加接近目标时再按减速度降下来。我用的方法是在定时器中断里逐步修改 PR2 值。每 1ms 更新一次加速度设定为需要达到的速度变化量除以更新时间。举个例子从 100PPS 加速到 6400PPS用 500ms 完成那每一步1ms增加 12.6PPS转化成 PR2 的调整量period 80000000 / pps每次更新就重新计算 PR2 并直接写入。PIC32 在运行中修改 PR2 不会触发异常但要注意写入时机尽量靠近中断点减少波动。我在算法里存了一个当前剩余步数变量到达目标步数附近后就开始减速。整个加减速函数大概长这样void Motion_Update(void) { if (motionState ACCEL) { currentPPS accelStepPPS; if (currentPPS targetPPS) { currentPPS targetPPS; motionState CONST_SPEED; } } else if (motionState DECEL) { currentPPS - accelStepPPS; if (currentPPS stopPPS) { currentPPS 0; motionState STOPPED; } } StepTimer_SetFreq(currentPPS); }梯形加减速的拐点计算有个坑如果你按照到中间点开始减速的固定思路在步数比较短时会来不及提速就要降速。我后来引入了三角速度曲线自动判断当最大步数不足够完成完整加减速时把加速段和减速段压缩。这个逻辑不复杂但必须在代码里处理掉否则短距离移动必定丢步。4.4 状态机与限位开关处理在机器人应用里电机不能只是转还得有状态管理空闲、使能、运行、暂停、报错。我用一个简单状态机static enum { AXIS_IDLE, AXIS_HOMING, AXIS_MOVING, AXIS_FAULT } axis_state; void Motion_Init(void) { axis_state AXIS_IDLE; } void Motion_Home(void) { axis_state AXIS_HOMING; Stepper_SetDirection(BACKWARD); StepTimer_Init(HOMING_PPS); } void ISR_LimitSwitch(void) { if (axis_state AXIS_HOMING) { StepTimer_Stop(); Stepper_SetDirPosition(0); axis_state AXIS_IDLE; } }这个状态机的关键点在于限位开关中断里要同时停脉冲和清计数器。否则电机虽然物理停住了但计数器不停下一次定位会直接偏掉。我在实际设备上就吃过这个亏没清计数导致机械臂每次都偏一格反复调试才发现问题。5. 调参与实测电流、衰减模式、加减速曲线的最佳组合5.1 电流设置的平衡力矩、温升、失步三者怎么权衡电流不能盲目往大调。很多人觉得 额定电流 2A我就设 2.5A力气肯定更大这个想法在持续运行场景里是有问题的。电机和驱动器的温升取决于电流有效值电流过大温升显著加快驱动器热保护一开电机直接掉力矩。同时过大电流会让铁芯饱和力矩增长的边际效应其实很低。我的经验公式是目标电流设为电机额定电流的 1.2 - 1.3 倍作为峰值限流但如果电机连续运行超过 10 分钟建议把限流压到额定值的 1.05 倍。比如额定 2A短时定位大负载用 2.4A连续运行场景用 2.1A。这个数值可以用红外测温枪反馈来校准一般表面温度控制在 70°C 以内比较稳妥。5.2 衰减模式实测为什么混合衰减完胜DRV8818 的 DECAY 引脚提供四种模式我全部实测过一轮DECAY 设置模式低速噪声中速发热高速力矩00慢衰减明显哼声正常略降01混合衰减 25%噪声明显下降低正常10混合衰减 50%更低略高高11快衰减微弱较高高从表格能看出混合衰减在低速噪声和中速发热之间取了平衡。我最后选定 DECAY 10 档混合衰减 50%在 30rpm 下比快衰减噪声降低了大概 6-8 dB这个差异在安静的检测实验室里非常明显。当然如果你需要最高转速下的最大力矩可以考虑快衰减但普通工业场景我更推荐混合衰减。5.3 加减速参数的现场整定法加减速参数我不喜欢拍脑袋定。我的方法是在设备上做斜坡测试从静止直接给一个高速目标观察电机是否丢步。记录丢步临界加速度然后打八折作为实际加速度。比如某个 57 电机加 3kg 负载直接上 6000PPS 丢步用梯形加速从 300PPS 用 300ms 加到 6000PPS 可以成功那我实际就用这个参数并留 20% 裕量。对于低速爬行段我通常把起点频率设在 100PPS这样 1/32 微步下相当于每秒走 0.56°肉眼看起来是慢慢移动的但对准机构时这种低速爬行特别有用。5.4 丢步检测简单有效的惯性判断机器人设备最怕的就是丢步了还不知道继续执行下一段路径导致整个工件报废。我的做法是在每个关键定位到位后加一个到位确认逻辑——发送完预定的步数后立刻检查编码器或限位信号确认实际位置与预期一致。如果项目预算允许装编码器建议直接读编码器回调确认。如果像我某些轴没装编码器就采取另一个保守方案每一次运动到位后都回到绝对零点重新校准或者在关键点位夹装光纤传感器到位后触发信号作为确认。这个方案不增加太多成本但能有效避免假到位。6. 工业与机器人场景下的可靠性设计细节6.1 使能时序与上电逻辑步进电机驱动的上电时序在工业现场是个隐形杀手。如果刚上电时 PIC32 各个 GPIO 输出还不稳定DRV8818 的 nENBL 引脚一旦出现误低电平电机就会在器件初始化期间处于使能状态产生位置偏移甚至抖动。我采取的措施有两个第一在 PIC32 启动代码的第一时间把 nENBL 拉高停用电机输出然后再初始化外设和定时器第二外部加一个上拉电阻到 3.3V确保在 MCU 没接管引脚时为高电平。这两层保险叠加后我从来没有再遇到过度上电电机乱跳的问题。还有一个细节复位期间 PIC32 的定时器输出脚可能呈高阻态DRV8818 的 STEP 引脚如果悬空会引入杂波可能导致电机误走一两步。对策是在 STEP 引脚加一个 10k 下拉电阻把高阻信号钳位到确定低电平。6.2 故障处理nFAULT 的正确打开方式DRV8818 的 nFAULT 引脚在故障时拉低故障包括过流、过热、欠压等。我在所有项目里都把这个引脚接到 PIC32 的外部中断输入并且在中断服务程序里做三件事停止所有轴运动、把故障状态存入非易失存储、通过串口上报错误代码。这里有个容易被忽略的点nFAULT 可能在故障解除后自动恢复高电平但你的代码如果只记录曾经故障过而不清除错误状态设备就可能被锁死。我的做法是中断里只标记 event主循环里读取并处理后主动清除标志在用户确认后重新使能。同时注意不是所有故障都自动恢复需要判断是瞬态还是持续故障。6.3 长线缆传输与信号完整性工业机器人的电机线缆经常有好几米步进脉冲频率高的时候信号幅度衰减、边缘变缓非常明显。PIC32 的输出 GPIO 驱动能力和普通逻辑芯片一样有限长线缆上直接传方波到 DRV8818 那边可能已经变成梯形波触发位置抖动甚至误触发。我的处理方法是STEP 和 DIR 信号都加 74HC244 缓冲器提高驱动能力并在线缆末端并联一个 100pF 电容到 GND 做简单的阻抗匹配。如果线缆超过 5 米建议用 RS422/差分方式传脉冲。PIC32 有多个 UART虽然标准 UART 不是差分但可以用带差分输出的线路驱动器如 AM26LV31)把单端信号转成差分DRV8818 侧再用 AM26LV32 接收。这套方案我在一台 8 米线缆的设备上验证过运行完全正常。6.4 电源与地设计绝缘、隔离和回流路径工业设备至少要做到电机电源和逻辑电源分开最好加光耦隔离。我在标准驱动模块上的做法是PIC32 侧用 3.3V 电源DRV8818 的 VM 侧接 24V 或 48V两个地平面单点连接。如果设备有强干扰源比如变频器、接触器建议加光耦隔离 STEP / DIR 信号从根本上斩断地环路。散热方面也要提前算账。比如 48V 供电、2.4A 电流当电机工作在低速时驱动器里的功率损耗很容易超过 3W芯片的热阻约 20°C/W外壳温度会升到 60°C 以上。这种情况下散热焊盘接地的价值就非常明显了。我测试过同样负载和电压下底部焊盘大面积铺地比只留四个过孔的版本芯片温升低了约 15°C寿命稳定性完全不是一个量级。6.5 实际故障排查案例一次 nFAULT 误拉低的完整诊断过程我在调试另一台设备时遇到一个诡异问题驱动器运行十分钟后间歇性 nFAULT 拉低电机停止重新复位后又正常过一会儿复发。开始怀疑是热保护但红外测温看芯片外壳只有 55°C远没到过热保护点。后来拿示波器抓 VM 波形发现 VM 电压在电机启动瞬间跌落到了 16V低 24V 的欠压阈值附近这才意识到问题的真正根源是电源裕量不足——开关电源在电机启动力矩峰值时维持不住电压。解决方式在 VM 整流端子加一组 470uF 电解电容瞬间储能把跌落压到 2V 以内。这个案例告诉我们遇到故障先不要只盯驱动芯片本身电源能提供的峰值电流才是根子。步进电机启动时的浪涌电流可以达到平均电流的数倍电源的峰值电流指标比额定电流更关键。7. 这套方案后续还能怎么扩展用 DRV8818PWPR 加 PIC32MX460F512L 打好基础之后往更高阶方向扩展很容易。比如要在机器人上做多轴联动可以在 PIC32 里加一个虚拟主轴的概念所有轴共用同一个运动步基各轴通过比例关系确定自己的加减速曲线。这个就是经济型 CNC 系统里脉冲分配器的思路PIC32 的 80MHz 主频完全能跑得动四轴联动线性插补。如果后面要上总线控制PIC32MX460F512L 的 CAN 2.0 模块可以直接对接现场总线DRV8818 这边不用改硬件加一个 CAN 转脉冲的协议转换固件就行。很多工业机器人现场就是走 CANopen 或 DeviceNet 控制步进轴这个组合是现成的。我还有一个项目把 DRV8818 用在了视觉检测的 XY 运动平台上图像采集和运动控制都由 PIC32 负责UART1 和相机触发信号同步效果很稳定。步进电机做视觉定位平台虽然不如直线电机快但胜在成本低、结构简单、精度足够微步细分后重复定位精度能到 ±0.02mm在很多检测工位上完全够用。最后分享一个我个人的体会做这类驱动项目别一开始就追求最完美方案先把最基础的电流设置、加减速、故障保护这三件事做扎实剩下的精度、噪声、发热问题都会在调试过程中慢慢暴露每个问题解决掉整个系统才越来越接近工业级可靠。DRV8818PWPR 和 PIC32MX460F512L 这套组合能陪你走完从原型到量产的全过程值得在选型手册里给它留一个位置。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

中望3D钣金:轮廓凸缘 2026/10/3 12:52:02

中望3D钣金:轮廓凸缘

首先创建一个基体平板,然后选择要创建非标准造型法兰的边。单击“编辑轮廓”按钮

阅读更多 →
苹果Mac电脑玩我的世界没有版本?用PCL-R即可! 2026/10/3 12:51:30

苹果Mac电脑玩我的世界没有版本?用PCL-R即可!

玩《我的世界》的 Mac 用户应该都懂这个痛点:PCL2 启动器原生只支持 Windows,官方没有 Mac 版本。 网上方案翻遍了,无非几种: 装 Parallels / VMware 虚拟机,开销巨大,M 芯片 Mac 发热严重、掉帧&#xff…

阅读更多 →
中望3D钣金:拉伸凸缘 2026/10/3 12:51:23

中望3D钣金:拉伸凸缘

该命令通过草图创建凸缘(支持开放和闭合草图)1.创建一个开放草图2.拉伸凸缘注意:若草图已有半径,半径选项将不生效.带闭合草图轮廓的拉伸凸缘注意:如果切口点是空白的,那么它将创建一个不能展开的封闭形状 …

阅读更多 →
LeetCode.1047.删除字符串中的所有相邻重复项 2026/10/3 12:50:05

LeetCode.1047.删除字符串中的所有相邻重复项

题目给出由小写字母组成的字符串 s,重复项删除操作 会选择两个相邻且相同的字母,并删除它们。在 s 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。就是用栈去遍历,碰上…

阅读更多 →
html学习第二天 2026/10/3 12:50:05

html学习第二天

1.ctrl shift /- 使vscode界面扩大/缩小 相对路径:相对于当前位置 2.本地绝对路径:src“E:/demo1/demo2/xxx.jpg” 3.网络绝对路径:src“图片地址,例如: https://i-blog.csdnimg.cn/direct/e7ea10edf06c4907a2ae713e0…

阅读更多 →
LeetCode.020.有效的括号 2026/10/3 12:49:18

LeetCode.020.有效的括号

题目给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉