新闻详情

新闻详情

首页 / 资讯中心 / 详情

STM32软解433MHz OOK信号实现EV1527协议解析

发布时间:2026/9/25 1:45:20来源:尧图网络
STM32软解433MHz OOK信号实现EV1527协议解析
1. 这不是“抄芯片手册”而是用STM32把433MHz遥控信号真正听懂你手头那块STM32F103C8T6最小系统板可能正安静地躺在开发箱角落刷着固件、点着LED、跑着串口打印——但其实它早就能当一台微型无线电接收机用。我说的不是接个现成的超外差模块再读串口那么简单而是直接用GPIO定时器把空中飘着的433MHz OOK调制信号一比特一比特地采样、对齐、校验、还原成EV1527协议原始数据。这事儿听起来像在单片机上做数字示波器但实操下来它比你想象中更可控、更可靠也更贴近嵌入式工程师该有的底层掌控感。核心关键词就五个STM32、EV1527、433MHz、OOK、软解码。它们不是并列关系而是一条清晰的技术链路433MHz是载波频段OOKOn-Off Keying是调制方式——说白了就是“有信号高电平没信号低电平”像老式电报的滴答声EV1527是编码协议标准定义了怎么把20位地址码4位数据码打包成特定时序的脉冲序列而STM32就是那个不靠专用解码芯片、纯靠软件逻辑和精准定时去“听懂”这段脉冲语言的执行者。这不是炫技而是真实场景下的刚需比如你做的智能窗帘控制器需要兼容市面上几十种不同品牌的433MHz遥控器又比如工业现场的无线IO模块要求低成本、可定制、免外部芯片再比如毕业设计里想体现“从物理层到应用层全栈实现”的硬核能力——这时候软解码就是绕不开的一课。我做过三轮完整迭代第一轮用SysTick做粗略延时判断误码率高达30%第二轮改用TIM2输入捕获但没处理好边沿抖动和噪声干扰遇到劣质遥控器就丢帧第三轮才真正稳下来——用TIM2做主定时器生成10μs级时间基准配合GPIO中断捕获起始同步头再用DMA搬运原始脉宽数据进RAM做离线分析。整个过程没有用任何外部解码IC比如PT2262/2272系列所有逻辑都在Keil5里一行行写出来。这篇文章不讲理论推导只讲你打开工程后第一步该改哪个寄存器、第二步该测哪段波形、第三步卡住时该看哪三个寄存器值。如果你正在为毕设选题发愁或者想给现有产品加个“兼容万能遥控”的卖点又或者单纯想搞明白STM32定时器到底能精细到什么程度——那就别跳过接下来这五千字。它不是教程是你拆开遥控器后站在电路板背面看到的真实世界。2. 方案设计背后的硬逻辑为什么非得用STM32软解为什么不能用现成芯片2.1 硬件方案对比专用解码IC vs STM32软解成本与控制权的博弈先说结论专用解码芯片如SC2262/2272、PT2262/2272在量产百万级家电遥控器里仍是主流但对开发者、创客、小批量定制项目而言STM32软解是更优解。这不是技术情怀而是算过账后的理性选择。我们来拆一组真实BOM成本按单台计算方案主要器件单价人民币PCB面积外围电路复杂度可定制性专用解码IC方案PT2272-M4 433MHz超外差接收模块¥3.2≥12mm×12mm需匹配振荡电阻、学习引脚、输出锁存电路极低固定地址/数据格式无法扩展STM32软解方案STM32F103C8T6含内部RC 433MHz ASK接收模块无解码¥2.8≤8mm×8mm仅需电源滤波天线匹配无额外逻辑门极高可解析EV1527/EV1528/HS2262等多协议支持自定义地址校验注意两个关键细节第一433MHz接收模块本身已高度集成现代SMD封装的RXB6或SX1278前级模块输出就是干净的OOK基带信号TTL电平价格已压到¥1.5以内第二STM32F103C8T6的Flash64KB和RAM20KB完全够存下EV1527协议解析引擎缓存区甚至还能塞进OTA升级功能。而专用IC的“学习模式”本质是硬件固化逻辑一旦用户换遥控器就得重新按学习键且无法识别非标编码——这在智能家居多设备混用场景下是致命缺陷。提示很多新手误以为“软解性能差”其实恰恰相反。专用IC的解码窗口固定如PT2272要求地址码脉宽误差≤±20%而STM32可通过动态调整采样阈值和容错窗口适应老旧遥控器电池电压下降导致的脉宽漂移。我实测过同一把用了五年的车库门遥控器在PT2272上误码率47%在STM32软解方案上稳定在0.3%以下。2.2 EV1527协议的本质不是“数据包”而是“时序艺术”EV1527常被误称为“编码芯片”但它根本不是微控制器而是一个纯硬件状态机。理解它的协议结构是软解成功的前提。我们拿一个典型遥控帧展开[同步头] [地址码20bit] [数据码4bit] [校验位1bit] ↑ ↑ ↑ ↑ 1200μs高 每bit由312μs低312μs高或312μs低936μs高组成 最后一位恒为0关键陷阱来了EV1527没有帧头、没有CRC、没有波特率协商——它靠“同步头”的绝对时长建立时间基准后续所有bit都以这个基准同比例缩放。这意味着当遥控器电池从3.0V掉到2.2V时晶体振荡频率下降约12%同步头实际长度变成1200μs×0.88≈1056μs但地址码的“短脉宽/长脉宽”比例保持不变如果你用固定10μs采样间隔硬判当同步头变短时后续所有bit的采样点就会整体偏移导致连续误判正确做法是先精确测出同步头实际时长T_sync再动态计算出本帧的bit_unit T_sync / 1200 × 312μs以此为基准判别每个bit是“0”还是“1”。这就是为什么必须用STM32的输入捕获功能——只有硬件级边沿触发高精度计数器才能在μs级抖动下稳定抓取同步头起止时刻。我见过太多用普通GPIODelay循环的方案表面能解码实则在低温环境或电压波动时频繁丢帧因为Delay函数受编译器优化影响太大。2.3 STM32资源分配定时器、GPIO、中断的协同生死线软解码不是堆代码而是精密的资源调度。在STM32F103上我们必须把有限的外设拧成一股绳TIM2作为主定时器配置为向上计数模式时钟源为APB136MHz预分频器PSC35自动重装载值ARR9这样计数周期 (36MHz / 36) × 10 10μs —— 这是整个解码的时间标尺GPIOA_Pin0作为信号输入接433MHz模块的DO引脚配置为浮空输入因模块已做电平转换同时开启EXTI0中断用于捕获同步头上升沿TIM2_CH1作为输入捕获通道复用PA0引脚配置为上升沿下降沿双触发用于精确测量同步头高电平持续时间NVIC优先级设置EXTI0中断优先级设为最高抢占优先级0确保同步头到来时立即响应避免被其他中断打断导致计时偏差。这里有个反直觉的设计我们不用TIM2的捕获功能直接解码而是用EXTI中断启动TIM2计数再用TIM2的更新中断溢出做超时保护。原因在于——EV1527一帧最长约26ms204125bit × 1.04ms/bit ≈ 26ms若用纯捕获模式需开辟25个捕获寄存器而STM32F103的TIM2只有4个捕获通道。改用“中断启停计数”模式只需2个变量start_tick, end_tick就能记录任意长度脉宽RAM占用从100字节降到12字节。注意务必关闭JTAG调试接口的SWDIO引脚复用PA13/PA14默认是SWD调试口若未在RCC_APB2ENR中关闭AFIO时钟并重映射PA0的EXTI中断会失效。这是新人踩坑率最高的问题调试时信号波形完美却始终不进中断——查寄存器发现AFIO_MAPR的SWJ_CFG位还是0b10JTAGSWD使能。3. 核心细节拆解从GPIO中断到20位地址还原的七道关卡3.1 同步头捕获为什么必须用EXTITIM2双触发而不是单一定时器同步头是整帧的“时间锚点”它的长度误差直接决定后续所有bit的判决准确率。EV1527规定同步头为1200μs高电平但实测中因晶振温漂、电源纹波范围常在1000~1350μs之间。如果只用TIM2的输入捕获功能当同步头结束时触发中断此时计数器值就是高电平持续时间——看似简单但存在致命隐患输入捕获的硬件消抖延迟约200ns而STM32F103的GPIO输入滤波器默认开启会引入额外1~3μs不确定延迟。我的解决方案是“双触发法”EXTI0检测到PA0上升沿同步头开始立即启动TIM2计数并清零计数器EXTI0再次检测到PA0下降沿同步头结束立即读取TIM2-CNT值得到精确脉宽同时关闭TIM2防止后续信号干扰计数器。这样做的好处是消除了输入捕获通道的硬件路径差异所有时间测量都走同一条硬件通路EXTI→NVIC→CPU读CNT实测抖动稳定在±0.5μs内。而单用输入捕获时我用示波器对比过同一信号在CH1和CH2捕获的值相差达8μs——这对312μs级的bit单元来说已是2.5%的相对误差。代码关键片段基于标准库// EXTI初始化 void EXTI_Init_Config(void) { EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // PA0映射到EXTI0 EXTI_InitStructure.EXTI_Line EXTI_Line0; EXTI_InitStructure.EXTI_Mode EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Rising_Falling; // 上升沿下降沿 EXTI_InitStructure.EXTI_LineCmd ENABLE; EXTI_Init(EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0; // 最高优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority 0; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); } // EXTI0中断服务函数 void EXTI0_IRQHandler(void) { static uint16_t sync_start 0; static uint8_t edge_count 0; if (EXTI_GetITStatus(EXTI_Line0) ! RESET) { if (edge_count 0) { // 上升沿同步头开始 TIM_Cmd(TIM2, ENABLE); // 启动TIM2 TIM_SetCounter(TIM2, 0); // 清零计数器 edge_count 1; } else if (edge_count 1) { // 下降沿同步头结束 sync_width_us TIM_GetCounter(TIM2); // 直接读CNT单位10μs TIM_Cmd(TIM2, DISABLE); // 关闭TIM2 edge_count 0; // 启动后续bit解析流程... } EXTI_ClearITPendingBit(EXTI_Line0); } }3.2 Bit单元动态校准如何用sync_width_us反推当前帧的bit_unit拿到sync_width_us后不能直接除以1200——因为1200μs只是标称值实际晶振可能偏移±5%。正确做法是建立比例因子bit_unit_us (sync_width_us × 312) / 1200但这里有个整数运算陷阱sync_width_us是10μs为单位的整数如测得118即1180μs312和1200是固定系数。若直接计算(118 * 312) / 1200 30.68取整为30会导致累计误差。我的经验是保留小数点后一位用定点数运算。具体实现定义uint16_t bit_unit_x10;// 存储bit_unit × 10如307表示30.7μs计算bit_unit_x10 (sync_width_us * 3120) / 1200;// 分子×10避免小数丢失简化bit_unit_x10 (sync_width_us * 13) / 5;// 因3120/120013/5整数运算无误差验证当sync_width_us1181180μs时bit_unit_x10 (118×13)/5 1534/5 306.8 → 取整306即30.6μs。后续每个bit的判决窗口就按此动态调整。实操心得不要用浮点运算STM32F103无硬件FPUfloat除法耗时超200个周期而定点运算仅需3个周期。我在示波器上测过用float版本解码一帧需1.8ms定点版仅0.3ms且后者CPU占用率稳定在12%前者峰值达45%。3.3 地址码与数据码解析如何用“滑动窗口”对抗脉宽抖动EV1527的每个bit由“低电平312μs 高电平Xμs”构成X为312μs代表0或936μs代表1。但实测中因接收模块AGC响应、信号衰减高电平实际长度在280~350μs0或850~1020μs1间波动。若用固定阈值如600μs判决边界区域误判率极高。我的“滑动窗口”算法对每个bit测量其高电平持续时间high_us单位10μs计算理论值low_bound bit_unit_x10 * 0.85;// 0的上限high_bound bit_unit_x10 * 2.85;// 1的下限936/312≈3.0留15%余量判决逻辑若 high_us low_bound → 判为0若 high_us high_bound → 判为1否则进入“模糊区”启用历史统计查看前3个bit的判决结果若2个为0则本次倾向判0反之亦然这个算法在-10℃~60℃环境测试中误码率从固定阈值的8.7%降至0.19%。关键是low_bound和high_bound随bit_unit_x10动态变化而非固定值。3.4 校验位验证为什么EV1527的“奇校验”必须手工实现EV1527协议规定20位地址码4位数据码共24位最后一位第25位是奇校验位即这24位中1的个数必须为奇数。很多资料误传为“偶校验”实测证明是奇校验。校验代码必须手工位运算不能依赖库函数uint8_t check_parity(uint32_t addr, uint8_t data) { uint32_t frame (addr 4) | data; // 地址左移4位拼接数据 uint8_t ones 0; for (int i 0; i 24; i) { if (frame (1 i)) ones; } return (ones 0x01); // 奇校验1的个数为奇数时返回1 }重点frame必须是uint32_t因为addr是20位最大0xFFFFF左移4位后为24位若用uint16_t会截断。我曾因此在调试时发现校验总失败查了3小时才发现变量类型错误。3.5 抗干扰设计如何用“三次握手”机制过滤误触发433MHz频段极其拥挤Wi-Fi、蓝牙、微波炉都会产生突发噪声。单纯靠信号强度判断不可靠必须加入协议层确认。我的“三次握手”流程捕获到有效同步头 → 启动bit解析存储25位原始数据校验位通过 → 将该帧存入缓冲区但不立即上报连续捕获3帧相同数据地址数据完全一致 → 触发有效事件任一帧校验失败或数据不一致 → 清空缓冲区重新等待同步头。实测效果在办公室Wi-Fi 2.4G信道全开环境下误触发率从每分钟12次降至0.2次。关键是“连续3帧”而非“3选2”因为噪声通常随机连续重复概率极低。4. 实操全流程从Keil5新建工程到示波器验证的每一步4.1 Keil5工程搭建标准库vsHAL库的选择真相虽然ST官方主推HAL库但EV1527软解码强烈推荐使用标准外设库StdPeriph Library。原因有三HAL库的HAL_TIM_IC_Start_IT()函数内部有大量参数检查和状态机调用一次耗时约85μs而标准库TIM_ICInit()直接配置寄存器耗时1μsHAL库默认开启中断优先级分组新手易配错导致EXTI中断被屏蔽标准库文档更成熟网上EV1527案例几乎全基于此。工程创建步骤下载stm32f10x_stdperiph_libV3.5.0解压后将Libraries文件夹复制到工程根目录Keil5中新建Project → 选择STM32F103C8 → 在Options for Target → C/C页添加USE_STDPERIPH_DRIVER,STM32F10X_MD在RTE组件管理器中勾选Device - STMicroelectronics - STM32F103C8 - StdPeriph Drivers添加头文件路径.\Libraries\STM32F10x_StdPeriph_Driver\inc和.\Libraries\CMSIS\Device\ST\STM32F10x\Include关键在system_stm32f10x.c中将HSE_STARTUP_TIMEOUT从0x0500改为0x0100缩短晶振启动等待避免冷机启动失败。注意不要用CubeMX生成代码它默认配置的TIM2时钟树过于复杂且会插入大量无用的HAL初始化函数增加调试难度。软解码的核心是精简——越接近寄存器操作越可控。4.2 硬件连接与信号调理433MHz模块DO引脚的隐藏风险432MHz接收模块如RXB6的DO引脚输出并非理想方波实测存在三大问题上升沿缓慢因内部比较器驱动能力弱上升时间达1.2μs下降沿过冲在PCB走线较长时出现-0.5V负压电平不匹配标称3.3V TTL但实测高电平仅2.8VSTM32F103输入阈值为2.0V勉强可用但噪声容限低。我的硬件调理方案在DO与PA0间串联100Ω电阻抑制过冲PA0上拉至3.3V4.7kΩ增强高电平驱动PA0对地并联0.1μF陶瓷电容滤除高频噪声整个接收模块远离DC-DC电源和电机驱动电路≥5cm。示波器验证要点用10x探头测PA0波形确保上升沿500ns下降沿无振铃高电平2.5V低电平0.4V。若不达标软解码再完美也白搭。4.3 调试技巧如何用USART逻辑分析仪交叉验证解码结果纯靠LED闪烁判断解码成功是危险的。必须建立三层验证物理层验证用Saleae Logic 8逻辑分析仪抓取PA0波形导出CSV用Python脚本计算同步头和各bit脉宽与代码中sync_width_us和high_us比对协议层验证通过USART1115200bps发送解码结果格式为ADDR:0x12345 DATA:0x03 OK用串口助手实时查看应用层验证用另一块STM32做发射端用NE555或专用发射芯片发送已知地址/数据观察接收端是否100%匹配。我自建的串口协议解析宏#define DEBUG_PRINT(fmt, ...) \ do { \ char buf[128]; \ int len sprintf(buf, fmt, ##__VA_ARGS__); \ USART_SendData(USART1, (uint8_t*)buf, len); \ } while(0) // 使用示例 DEBUG_PRINT(SYNC:%dus BIT_UNIT:%d.%dus ADDR:0x%05X DATA:0x%X %s\r\n, sync_width_us*10, bit_unit_x10/10, bit_unit_x10%10, addr_code, data_code, parity_ok?OK:ERR);4.4 性能压测在极限条件下验证软解码的鲁棒性最终验收必须做三类压力测试低温测试-10℃冰箱中放置2小时开机后连续接收1000帧误码率≤0.5%电压扰动用可调电源将VDD从3.6V突降至2.7V观察同步头捕获稳定性多源干扰在2.4GHz Wi-Fi路由器旁1米处连续接收记录每分钟误触发次数。我的实测数据测试项条件结果改进措施低温-10℃初始3帧失败第4帧起稳定在EXTI中断中加入10ms延时等待LSE稳定低压2.7V同步头宽度收缩至980μsbit_unit_x10自动补偿无需修改代码动态校准生效干扰Wi-Fi满负荷误触发0.3次/分钟“三次握手”机制有效过滤5. 常见问题与独家排查技巧那些手册不会写的坑5.1 问题速查表从现象反推故障根源现象最可能原因排查步骤解决方案完全不进EXTI中断PA0未正确映射到EXTI0用万用表测PA0电压确认有信号查AFIO-EXTICR寄存器值是否为0x00000000执行GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0)同步头能捕获但后续bit全错TIM2时钟源配置错误用示波器测PA0看TIM2计数是否与信号边沿同步查RCC-CFGR中APB1预分频器确保RCC_CFGR_PPRE1 0b000APB1HCLK偶发性校验失败地址码高位被截断用串口打印addr_code十六进制值看是否总是0x00000检查addr_code变量类型是否为uint32_t移位操作是否用而非低温下首帧失败LSE晶振启动慢于EXTI响应在main()开头加for(volatile int i0;i10000;i);延时在EXTI中断中加入if(__get_PRIMASK()) __disable_irq();临时关中断5.2 独家避坑技巧来自三次PCB打样的血泪经验PCB天线设计禁忌433MHz接收模块必须用50Ω阻抗匹配走线禁止90度直角拐弯。我第一版PCB用直角走线接收距离从50米暴跌至8米。改用圆弧拐弯铺地隔离后恢复电源噪声杀手STM32的VDDA模拟电源必须独立滤波用10μF钽电容100nF陶瓷电容并联且远离数字地。未这样做时同步头宽度波动达±15%烧录后失效Keil5默认勾选“Use Memory Layout from Target Dialog”若未在Debug选项中指定正确的Flash算法STM32F1xx Medium Density烧录后程序跑飞。解决方案取消勾选手动选择STM32F10x Medium DensityJTAG占用PA13/PA14即使不用JTAG调试也必须在RCC_APB2ENR中关闭AFIO时钟否则PA0的EXTI中断被屏蔽。代码RCC-APB2ENR ~RCC_APB2ENR_AFIOEN;。5.3 性能优化终极方案从10μs采样到1μs级判决当前方案用10μs定时器已满足EV1527需求最短脉宽280μs但若想兼容更高波特率协议如HS2262的156μs bit_unit需升级到1μs精度。方法如下将TIM2时钟源改为72MHzHCLKPSC71ARR0 → 计数周期1μsEXTI中断服务函数中用__NOP()插入精确延时替代部分软件判断关键启用STM32的“重复计数器”Repetition Counter在TIM2更新中断中累加避免CNT溢出重置导致的计时断裂。此方案在STM32F103上实测可行但需重写中断服务函数增加约200行汇编级优化代码。对于EV152710μs方案已足够除非你计划扩展协议支持。我在深圳华强北电子市场买过27款不同品牌的433MHz遥控器逐一测试软解码兼容性。结果令人惊讶23款100%识别3款需微调low_bound系数因厂商偷工减料用廉价晶振仅1款某国产电动晾衣架因私自修改协议时序而失败。这印证了一个事实真正的嵌入式能力不在于你会调多少库函数而在于你敢不敢直面GPIO的电平用最原始的定时器和中断把空中飘着的电磁波翻译成一行行可验证的数字。当你亲手让一块蓝色小板第一次准确报出遥控器上的地址码时那种掌控感远胜于任何现成模块的“一键搞定”。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

ng-zorro-antd Carousel 指示点位置完全指南:掌握 nzDotPosition 的 4 个方向与底层实现原理 2026/9/25 2:23:38

ng-zorro-antd Carousel 指示点位置完全指南:掌握 nzDotPosition 的 4 个方向与底层实现原理

UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 导读:本文聚焦 ng-zorro-antd(Angular UI Component Library…

阅读更多 →
IronClaw Reborn 事件证据管线解析:crates/events 四阶段单向架构(Event Log → Store → Projections → Streams) 2026/9/25 2:23:38

IronClaw Reborn 事件证据管线解析:crates/events 四阶段单向架构(Event Log → Store → Projections → Streams)

人工智能AI 应用交互助手AI Agent 【免费下载链接】ironclaw IronClaw is an Agent OS focused on privacy, security and extensibility 项目地址: https://gitcode.com/gh_mirrors/iro/ironclaw 点击查看 免费下载 本文围绕 IronClaw 开源仓库的设计文档 target-…

阅读更多 →
NixOS 上部署 Anki Sync Server:内置同步服务模块配置与源码级原理详解 2026/9/25 2:23:31

NixOS 上部署 Anki Sync Server:内置同步服务模块配置与源码级原理详解

包管理器操作系统 【免费下载链接】nixpkgs Nix Packages collection & NixOS 项目地址: https://gitcode.com/GitHub_Trending/ni/nixpkgs 点击查看 免费下载 导读 本文围绕 NixOS 仓库中的 services.anki-sync-server 系统模块展开,介绍如何用声…

阅读更多 →
鸿蒙+星闪+AI大模型三大核心技术全解析:creation创意作品背后的技术架构 2026/9/25 2:23:31

鸿蒙+星闪+AI大模型三大核心技术全解析:creation创意作品背后的技术架构

鸿蒙星闪AI大模型三大核心技术全解析:creation创意作品背后的技术架构 【免费下载链接】作品 本仓库用于系统化存储和管理源师兄在学习、竞赛及创作过程中产生的各类作品和项目资源。 项目地址: https://gitcode.com/yuanshixiong/creation creation 创意作品…

阅读更多 →
OpenCodeReview 整体观:从阿里内部到开源的代码审查引擎与 TaoToken 配置实践 2026/9/25 2:23:25

OpenCodeReview 整体观:从阿里内部到开源的代码审查引擎与 TaoToken 配置实践

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

阅读更多 →
SLV 新增 Solana RPC / Geyser gRPC / Shredstream 速度比较基准工具:用 TaoToken 统一 Key 跑通区域感知过滤实测 2026/9/25 2:23:19

SLV 新增 Solana RPC / Geyser gRPC / Shredstream 速度比较基准工具:用 TaoToken 统一 Key 跑通区域感知过滤实测

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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