1. 为什么我最终选了SNMP这条监控路线机房里的设备一多监控这件事就变得很现实服务器可以装客户端交换机、路由器、防火墙、UPS、精密空调、打印机这些设备装不了。你不可能在每个网络设备上跑一个监控代理厂商也不会为你的监控系统专门适配。这时候SNMP就成了那个唯一能把话说明白的协议——它内嵌在几乎所有网络设备里从十几年前的老交换机到刚上架的核心设备出厂就带只需要开一个只读权限就能把CPU、内存、端口流量、温度、风扇状态、电源状态这些关键指标定期吐出来。我这次做的事情就是用Zabbix通过SNMP去监控一批网络设备。标题里写着亲测确实是自己从头到尾踩了一遍从设备侧开SNMP、配团体字、限制访问源到Zabbix服务端装工具、手动snmpwalk验证、配主机、调模板、做自动发现、改触发器阈值再到后面遇到能walk通但Zabbix采不到数据端口流量单位看不懂某些OID返回noSuchObject这些烂事。整个过程不算复杂但坑点密度不低尤其是第一次做的人很容易卡在到底哪一步出问题上。这篇内容适合三类人看一是手上有一批网络设备需要纳入Zabbix监控、但之前只监控过主机的运维二是SNMP配置过但总是采不到数据、卡在验证环节的人三是想把监控从手工配一台台设备升级成网段自动发现的进阶使用者。我会把原理、配置、验证、模板、自动发现、排错这几个环节全部摊开讲命令和参数都能直接抄也会写清楚每一步为什么要这么做——因为SNMP这东西你不理解它问一句答一句的机制配错了根本不知道错在哪。需要提前说明一点不同厂商设备的OID树、团体字策略、支持的SNMP版本差别很大我下面给的命令和配置是通用骨架具体OID需要你用设备手册或者snmpwalk去确认。这是这类工作的常态指望一个模板打通所有品牌是不现实的。2. SNMP的运作机制与版本选型先把底层逻辑吃透2.1 一问一答的轮询模型决定了它能干什么不能干什么SNMP的本质特别朴素监控端发一个请求设备回一个结果中间没有长连接没有心跳没有设备主动上报Trap是另一条路后面单独说。Zabbix服务端每隔一段时间默认一分钟一轮的采集节奏具体看模板里item的更新间隔拿着团体字去问设备你那个端口1的入向字节数现在是多少设备查一下自己的MIB树把对应的值返回。整个过程是拉模式主动权在监控端。这个模型直接决定了几个特性。第一设备不需要为监控额外消耗资源它只是被动应答开销极小所以老设备也能扛住。第二采集是定时的两次采集之间的瞬时峰值你是看不到的只能看到采样点。这就意味着监控间隔设得太粗比如5分钟一次突发流量根本抓不住。第三网络必须通、团体字必须对、OID必须存在三者缺一采回来就是空。很多新手以为配了主机就完事了实际上Zabbix只是发起方设备不认你什么都拿不到。理解这一点很重要因为后面所有的排错逻辑都是从这三要素展开的通不通、认不认、有没有。2.2 v1、v2c、v3到底怎么选SNMP有三个常用版本选型这件事我踩过犹豫简单说结论版本认证方式安全性适用场景我的建议v1团体字明文最低极老的设备能不用就不用v2c团体字明文低内网、隔离网段内网监控的主流选择v3用户名认证加密高跨网段、合规要求高设备支持就优先v2c最大的问题是团体字明文传输抓包就能看到。但它在内网监控里依然是主流原因是配置简单、兼容性好、几乎所有设备都支持而且比v1多了64位计数器Counter64这在监控万兆口流量时是刚需——v1的32位计数器在高速端口上会很快溢出回绕算出来的流量是错的。v3虽然安全但配置成本高要设用户名、认证协议MD5/SHA、认证密码、加密协议DES/AES、加密密码设备侧和Zabbix侧必须完全一致差一个字符就认证失败而且报错信息通常很含糊。我的实际选择是内网隔离环境用v2c配合ACL把访问源限制到监控服务器IP跨网段或者合规要求的场景用v3认证用SHA、加密用AES128别用MD5和DES这种已经过时的算法。提示团体字不要用public、private这类默认值这是全网扫描最先试的两个词。改成一段无规律的字符串长度20位以上。2.3 Trap和轮询的区别别混着用SNMP有两种数据获取方式轮询Polling和设备主动发Trap。轮询是Zabbix定时去问Trap是设备出事了自己发过来比如端口down了、重启了。两者的定位完全不同轮询保证我定期知道状态Trap保证事情发生的第一时间我知道。很多场景下这两个要配合用。比如端口流量只能轮询因为它是连续变化的量端口up/down用Trap更及时轮询可能要等一分钟才发现。但Trap有个大坑它是UDP单包网络丢包、设备发送队列满、接收端没监听都会导致Trap丢失而发送方不会重传。所以我的做法是轮询为主Trap为辅Trap只用来加速告警感知兜底还是靠轮询的触发器。指望Trap做唯一数据源迟早被漏报坑一次。3. 服务端与设备端的前置准备把地基打平3.1 服务端装好SNMP工具链这是验证的生命线Zabbix服务端本身通过内置的SNMP采集器工作但排错时你离不开命令行工具。CentOS/RHEL系装net-snmp-utilsDebian/Ubuntu系装snmp# RHEL / CentOS / Rocky yum install -y net-snmp-utils # Debian / Ubuntu apt install -y snmp # 验证 snmpwalk -V snmpget -V这两个命令是整个过程的听诊器。在Zabbix里配任何东西之前先用snmpwalk确认能拿到数据这一步能省掉后面80%的扯皮。我见过太多人直接在Zabbix里建主机、加模板、看到一片红叉然后开始怀疑Zabbix有问题——实际上设备根本没放行。同时确认Zabbix server的SNMP采集进程正常。如果是用包安装的通常已经有zabbix-server服务如果是编译安装要确认编译时带了--with-net-snmp参数否则连SNMP采集能力都没有。3.2 设备侧开SNMP三个必须同时满足的条件设备侧配置我总结成三条铁律缺一条就采不到第一条SNMP服务本身要开启并且版本要匹配。如果Zabbix用v2c设备上必须启用v2c只开v3是不行的。有些设备开启SNMP是一个总开关然后下面分别勾选v1/v2c/v3。第二条团体字Community String要一致。这东西相当于密码明文比对大小写敏感前后空格也算错。设完之后建议从命令行直接验证一次别靠肉眼核对。第三条ACL要放行监控服务器的IP。这是最容易被忽略的一条。设备上有SNMP访问控制列表默认可能只允许管理网段监控服务器如果不在里面请求会被直接丢弃而且不返回任何错误——从监控端看就是超时跟网络不通的表现一模一样。我第一次配某台交换机时就栽在这ping得通、snmpwalk超时折腾半天才发现是ACL没加。设备侧一般还会让你填位置和联系人这两个sysObjectID相关的描述字段不是必须的但填了之后在Zabbix里看设备信息会舒服很多。3.3 网络放行清单别让防火墙背锅监控服务器到设备的UDP 161必须通这是SNMP请求端口。如果用了Trap方向反过来设备到监控服务器的UDP 162。排查时用这个命令确认端口可达性设备不一定回ICMP但UDP端口探测至少能看是否被拒# 简单探测UDP 161部分设备不回仅作参考 nc -vzu 192.168.10.1 161 # 更可靠的方式直接发一个snmpget看是否超时 snmpget -v2c -c YourCommunity -t 3 -r 1 192.168.10.1 sysUpTime.0-t 3是超时3秒-r 1是重试1次这两个参数在排错时特别有用默认超时1秒重试5次等半天才出结果浪费时间。把超时拉长、重试减少能快速判断是慢还是不通。4. 命令行验证所有配置的地基4.1 snmpwalk的第一条命令怎么发设备侧配好之后第一件事不是打开Zabbix界面而是敲这条命令snmpwalk -v2c -c YourCommunity 192.168.10.1不带OID的snmpwalk会从MIB树的根开始遍历输出非常长但这一步的价值在于它同时验证了版本、团体字、ACL、网络四件事。如果这条命令能刷出一大串SNMPv2-MIB::sysDescr.0 STRING: ...说明链路全通后面就是纯配置工作。如果超时按下面的顺序排查ping设备确认基础连通性换-v1试一次排除版本不匹配v1通说明设备只开了v1或v2c配置有问题检查设备ACL是否包含本机IP检查团体字是否有多余空格、大小写确认UDP 161没有被中间防火墙拦。4.2 挑几个关键OID做定点验证全量walk太慢实际排错时我更喜欢直接打关键OID# 系统描述验证基础可达 snmpget -v2c -c YourCommunity 192.168.10.1 sysDescr.0 # 系统运行时长验证能取到动态值 snmpget -v2c -c YourCommunity 192.168.10.1 sysUpTime.0 # 走一遍接口表验证端口相关数据可取 snmpwalk -v2c -c YourCommunity 192.168.10.1 1.3.6.1.2.1.2.2.1.2 # 走一遍接口流量计数器64位 snmpwalk -v2c -c YourCommunity 192.168.10.1 1.3.6.1.2.1.31.1.1.1.6最后一个OID是ifHCInOctets64位入向字节计数器专门给高速端口用的。如果这个能走通说明设备支持64位计数器Zabbix模板里就能放心用ifHCInOctets而不是32位的ifInOctets。这一步还有个隐藏价值你能看到端口索引和端口名的对应关系。SNMP里的端口是用ifIndex一个数字标识的不是用名字。1.3.6.1.2.1.2.2.1.2这个OID走出来的就是ifIndex到ifDescr的映射表记住这个对应关系后面看图表、配触发器全靠它。4.3 版本与安全的实测对比我特意在测试设备上把v2c和v3都过了一遍感受很直接。v2c一条命令搞定v3要写一长串snmpwalk -v3 -l authPriv -u monitoruser -a SHA -A AuthPass123 \ -x AES -X PrivPass456 192.168.10.1参数含义-l authPriv是安全级别认证加密-u用户名-a/-A认证协议和密码-x/-X加密协议和密码。安全级别还有noAuthNoPriv只对用户名、authNoPriv认证不加密两档。实测下来v3的错误提示非常不友好。密码错、用户名错、协议不匹配报的都是同一句Authentication failure你得逐个变量试。所以我的建议是v3配置时先降到authNoPriv验证用户名密码对不对通了再加上加密把变量拆开一次只调一个。5. Zabbix界面配置从主机到模板的完整链路5.1 建主机时那几个关键字段怎么填Zabbix里配置→主机→创建主机几个字段的填法直接影响成败主机名称建议用设备主机名便于识别可见名称可以用位置-型号-IP这种格式图表上好看群组按机房/楼层/设备类型分后面权限和批量操作靠它Interfaces这里必须选SNMP类型填设备IP和端口161。这一步填错是新手最常见的失误——默认是Agent接口不改成SNMP后面模板里的item全部不支持。接口类型选错的表现是item列表里全是不支持的红色日志里写着SNMP agent item ... failed: first network error。看到这个错误第一反应就是检查接口类型。5.2 模板选择通用模板先上厂商模板再补新建主机时挂Template Module Generic SNMP和Template Module Interfaces SNMP这两个通用模板前者提供系统信息、运行时长、联系人等基础项后者提供端口发现、端口状态、流量、错误包这些核心项。挂完模板不要急着看数据先点现在检查或者等一两个采集周期。这里有个细节模板里的item有延迟Preprocessing里的丢弃未变化的值之类的预处理以及发现规则的更新间隔有些项不会立刻有值比如接口自动发现的间隔默认是1小时你刚建完主机看不到端口是正常的可以手动执行一次发现规则。厂商模板比如某些品牌的专用模板能提供更细的指标比如电源状态、风扇转速、温度传感器。但厂商模板导入前要看清楚它依赖哪些OID有些模板是给特定固件版本写的老设备上全是noSuchObject。我的习惯是先上通用模板把基础监控跑起来再按需补厂商模板避免一上来堆一堆不支持的item。5.3 主机宏的用法别把团体字写死在模板里团体字不要直接填在item里用主机宏。在主机配置的宏标签页加{$SNMP_COMMUNITY} YourCommunity模板里的item引用{$SNMP_COMMUNITY}所有设备共用一套模板只在主机上改宏值。这是标准做法好处是换团体字只改一处坏处是第一次配的人不知道模板里引用了这个宏导致item报宏未定义。同理v3的用户名、认证密码、加密密码也都有对应的宏{$SNMP_USERNAME}等。用v3时这几个宏一个都不能少缺了就是认证失败。6. 自动发现从手工配置到批量纳管6.1 网络设备自动发现怎么配设备少的时候手工建还行超过二十台就必须上自动发现。Zabbix的配置→自动发现支持按IP段扫描配置项如下配置项值说明名称NetDevice-Scan自定义IP范围192.168.10.1-254监控网段更新间隔3600每小时扫一次检查方式SNMPv2 agent关键别选成ICMP端口161默认SNMP community{$SNMP_COMMUNITY} 或直接填与设备一致唯一性准则SNMP的sysName或IP防止重复创建检查方式里有个SNMPv2 agent选项它会去取sysDescr能取到就认为发现成功。这个方式比ICMP ping准确因为有些设备禁ping但SNMP是开的。扫到之后在动作里配置自动创建主机、加入群组、链接模板。动作的条件可以写发现的服务SNMPv2操作里指定模板和群组。这样新设备上架、配好团体字和ACL一小时内自动进监控。6.2 接口自动发现的机制与坑模板里的接口发现用的是SNMP discovery rule本质是一次snmpwalk接口表把每个ifIndex生成一个item原型。这个机制有几个坑第一虚拟接口会一起被发现。VLAN接口、Loopback、隧道接口全都在接口表里会生成一堆item。需要在发现规则的过滤器里加条件比如ifType只保留6以太网和161聚合口或者用ifDescr正则排除Vlan、Loopback。第二端口索引会变。设备重启、模块插拔后ifIndex可能重新分配导致图表断点、历史数据对不上。这是SNMP监控的固有缺陷缓解办法是用ifName或ifAlias作为过滤和展示依据而不是硬编码ifIndex。第三发现间隔别设太短。默认1小时是合理的设成5分钟会给设备带来不必要的walk压力尤其是接口多的核心交换机。6.3 自动发现失败的三类原因我遇到的自动发现失败基本归为三类扫不到发现规则本身失败检查方式选错、团体字错、ACL没放行监控服务器。用snmpwalk手动验证同样的参数。扫到了但没建主机动作没触发检查动作的条件和操作配置确认操作里确实加了添加主机和链接到模板并且动作是启用状态。还有个常见坑是唯一性准则设成了IP但主机已存在导致跳过。建了主机但没数据模板或宏问题检查主机上的宏是否继承正确、模板是否链接成功、接口类型是否被动作设成了SNMP。7. 指标解读与触发器调优让告警真的有用7.1 端口流量那几个OID到底怎么算这是我最想重点讲的部分因为单位换算和计数器溢出是SNMP监控里最容易出错的地方。Zabbix的接口模板默认用的是ifHCInOctets64位和ifHCOutOctets单位是字节。item的预处理里有一个改变每秒钟Change per second把累计字节数转换成字节/秒。然后item的单位设置里通常配了bps的换算。要把字节/秒转成bps乘8。模板里常见的预处理步骤是取当前值和上次值的差除以时间间隔 → 字节/秒乘8 → 比特/秒除以1000000 → Mbps。如果模板没做乘8你看到的数字会小8倍误判成流量很低。我在一台千兆设备上就见过显示125M实际是1G满载的情况排查了半天以为是设备限速。如果设备只支持32位的ifInOctets在千兆满载下每秒约125MB32位上限约4.29GB大概34秒就回绕一次。回绕时数值从最大值跳回0Zabbix算出来的每秒变化会是一个负数或者异常大的值。现代模板一般用Change per second配合丢弃异常值的预处理但老模板没这个保护图表上会出现尖刺。能确认设备支持64位计数器就一定要用64位OID这是省心的根本办法。7.2 触发器阈值怎么定别照抄默认值模板自带的触发器阈值是通用值直接套用到你的环境基本等于噪音制造机。举例端口流量告警默认可能设成链路速率的80%。但你有些端口是接入用户的白天跑满、夜里空闲设80%会天天报。正确的做法是按端口角色分类上联口设80%接入口设95%或者干脆不设流量告警只监控up/down。CPU告警交换机CPU在路由更新、生成树收敛时会短时冲高用单点阈值会误报。建议用avg(5m)或者连续3次超过阈值才触发。温度告警这个反而要灵敏超过厂商建议值就该报不要加太多平滑。触发器的表达式里用min()、avg()、count()这些函数做平滑比单点判断靠谱得多。比如5分钟平均CPU超过85%比当前CPU超过85%误报率低一个数量级。7.3 用标签和依赖关系压住告警风暴设备一多最烦的是一台核心交换机重启下面几十台设备同时告警。解决办法是配触发器依赖把核心交换机作为上游接入设备作为下游上游故障时下游告警被抑制。在配置→触发器→依赖里设置即可。另一个手段是标签。给触发器打上scope:network、severity:critical这类标签告警通知里按标签路由不同团队收不同告警。标签还能用于告警抑制和告警关联把同一台设备的多个告警合并成一条通知。8. 排错实录与常见问题速查8.1 典型故障的排查路径我把这一路遇到的问题整理成表按症状→原因→动作组织方便对照症状可能原因排查动作snmpwalk超时ACL未放行、团体字错、UDP161被拦从服务端ping、换v1试、查ACL、查防火墙snmpwalk提示Timeout: No Response设备禁用了SNMP或版本未启用登录设备确认SNMP开关和版本某OID返回noSuchObject该OID在当前设备/固件不存在用设备手册确认OID或walk父节点看实际结构Zabbix显示不支持的item接口类型选成了Agent、宏未定义、OID错检查主机接口、宏、item的OID采到数据但全是0采的是不活跃端口、或32位计数器回绕换成64位OID确认端口状态图表数值明显偏小字节未乘8转比特检查预处理和单位设置自动发现扫不到检查方式不是SNMP、团体字/ACL问题用snmpwalk同参数手动验证发现到了但没建主机动作未启用、条件不匹配、唯一性冲突检查动作配置和主机是否已存在8.2 我踩过的三个具体的坑第一个坑ACL没放行表现完全像网络不通。某台交换机配好团体字后snmpwalk一直超时ping正常。我一度以为是中间有防火墙查了半天路由。最后登录设备看SNMP配置发现ACL里只写了一个管理网段监控服务器所在的网段不在里面。加上之后立刻通。这个坑的教训是SNMP超时不要先怀疑网络先查设备侧的访问控制。第二个坑单位换算错虚惊一场。一台汇聚设备的端口图表显示稳定在120M链路是千兆我以为是限速策略生效了。实际是被监控的口跑的是1G满载因为模板预处理没做乘8显示的是字节/秒不是比特/秒。改完预处理后数值变成了960M跟实际情况吻合。这件事让我养成了一个习惯新模板上线前先用流量测试仪或者大文件传输打一次满带宽核对图表数字。第三个坑Trap救不了首次故障。我一开始很依赖Trap做端口down的告警觉得比轮询快。结果有一次设备重启Trap还没发出来或者发丢了告警延迟了好几分钟。后来改成Trap触发快速告警、轮询做兜底确认才稳。结论是SNMP的监控体系里轮询是主粮Trap是零食。8.3 独家避坑清单团体字别用默认值别在多个设备间复用同一个。一台泄露等于全网沦陷。养成给每类设备不同团体字的习惯泄露了只需要改一类。SNMP只读就够不要给读写权限。监控不需要写给了写权限反而增加误操作和攻击面。先用snmpwalk验证再动Zabbix界面。这条能省掉一半的排查时间顺序反了就是给自己找麻烦。v3先降级到authNoPriv验证再上加密。一次只调一个变量错误信息才有参考价值。接口发现一定配过滤器。不过滤的话一台48口交换机加上VLAN接口能生成上百个item监控自己的数据库先扛不住。模板更新要谨慎。Zabbix模板一升级所有链接的主机都会受影响生产环境建议先在测试主机上验证。给自动发现的动作加不重复创建条件。否则每次扫描都尝试建主机日志里全是host already exists。8.4 性能与规模上的注意点单台Zabbix server用SNMP监控几百台设备、几千个接口是没问题的但要注意几个参数StartSNMPPollersSNMP采集进程数默认值偏小设备多的时候要调大一般按总item数/单个poller能承担的item数估算粗略的经验是每个poller承担几百到一千个item具体看采集间隔。还有Timeout参数SNMP设备响应慢的时候默认3秒可能不够但要谨慎调大因为超时是阻塞的调太大会拖慢整体采集。数据库容量也要算。每个item每分钟一个值一千个item一天就是144万个数据点。历史数据保留策略要配好否则半年后数据库会大到影响查询。我的做法是告警相关的item保留90天纯展示的流量item保留30天趋势数据保留一年。监控网络设备这件事配通只是开始把指标调准、把告警压噪、把规模撑住才是真正花时间的部分。我现在的习惯是每接入一类新设备先手动walk一遍它的MIB树把厂商私有OID记下来再决定模板里放哪些item。这个笨办法看着慢但比事后在生产环境里猜某个数字是什么意思要快得多。
企业数字化 ERP 产品动态
相关推荐
Vue3路由异常排查与解决方案 1. 问题现象与初步排查最近在Vue3项目中遇到一个诡异的问题:当切换到某个特定路由时,不仅目标页面无法正常渲染,整个应用的所有路由页面都变成了空白。这种"一损俱损"的现象明显不符合SPA应用的常规表现,因为Vue Router… · 2026/11/3 15:42:28
AOA优化LSTM在时间序列预测中的高效应用 1. 项目背景与核心价值在时间序列预测领域,传统LSTM神经网络虽然表现出色,但超参数调优始终是个痛点。去年参与某能源负荷预测项目时,我曾花了整整两周手动调整学习率、隐藏层节点等参数,效果提升却不到3%。这种低效的体验促使我开… · 2026/11/3 15:42:28
Vue3拖拽组件边界异常问题解决方案 1. 问题现象与背景分析最近在Vue3项目中集成vue3-draggable-resizable组件时,发现一个棘手问题:当设置了parent属性限制拖拽范围后,元素的可移动区域会出现异常偏移。具体表现为:元素只能移动到父容器右下角部分区域左上角出现无法… · 2026/11/3 15:41:26
GitHub企业版迁移SaaS版全流程指南 1. 项目概述 最近接手了一个从自建GitHub企业版迁移到SaaS版GitHub的任务。作为团队中负责版本控制的工程师,我需要将数十个重要代码仓库完整迁移到新的平台。这看似简单的任务实际上涉及不少技术细节和注意事项,特别是要确保代码历史记录、分支和标签都… · 2026/11/3 16:16:34
5G后台网优工程师:高薪技术岗位解析与职业发展 1. 5G后台网优工程师:通信行业的"网络医生" 当你用手机流畅地刷着高清视频时,可能不会想到背后有一群"网络医生"在默默守护。5G后台网优工程师就是这样一群技术专家,他们通过专业的网络诊断和优化,确保我们的… · 2026/11/3 16:16:34
最小二乘法在时间序列预测中的高效应用与实践 1. 项目背景与核心价值时间序列预测在金融、气象、工业控制等领域有着广泛应用。传统方法如移动平均、指数平滑往往难以捕捉复杂非线性关系,而深度学习又存在计算资源消耗大、解释性差的问题。最小二乘算法(Least Squares, LS)作为一种经典的数学优化方法࿰… · 2026/11/3 16:16:34
工业级FDM 3D打印技术升级与分布式制造实践 1. 工业级FDM 3D打印的产业升级路径去年参观某汽车零部件供应商时,他们的技术主管指着车间角落里的两台桌面级FDM设备说:"这些机器帮我们解决了小批量试制问题,但真要批量生产时,精度和稳定性还是跟不上产线节奏。"这个… · 2026/11/3 16:16:34
工业FDM 3D打印服务联盟:高精度与规模化的完美结合 1. 项目背景与行业痛点工业级FDM(熔融沉积成型)3D打印技术发展至今已有十余年历史,但始终面临一个核心矛盾:设备的高精度与大规模生产需求难以兼得。传统工业FDM设备虽然能实现0.1mm的打印精度和工程级材料性能,但单台… · 2026/11/3 16:16:34
先进成像与机器视觉:AIMV 2026技术风向与工程落地实践 2026年先进成像与机器视觉国际学术会议(AIMV 2026)这个标题,我第一眼看到的时候就特别想聊一聊。做机器视觉这行久了,你会发现圈内真正值得跑的会其实就那么几个,而AIMV这种把“先进成像”和“机器视觉”放在一起的会议… · 2026/11/3 16:15:33
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46