基于STM32与ZAM6228的高精度温度监控

基于STM32与ZAM6228的多路高精度温度监控系统设计

在工业现场,配电柜过热、电机绕组温升异常、环境温控失效等问题常常成为设备故障的诱因。传统温度采集方案往往依赖分立元件搭建信号链——运放、恒流源、ADC、MCU校准算法……不仅调试周期长,还容易受噪声干扰导致测量漂移。有没有一种方式,能让工程师快速构建出稳定可靠的多点测温系统?

答案是肯定的: 集成化模块 + 灵活通信 + 本地可视化 。本文将围绕致远电子ZAM6228这一高精度8通道PT100测量模块,结合STM32单片机通过GPIO模拟I²C总线,并驱动OLED实时显示温度数据,完整呈现一个可直接投入应用的小型温度监控系统的实现过程。

这套方案的核心思路在于“ 用成熟模块替代复杂模拟设计,以软件灵活性弥补硬件资源限制 ”。我们不再需要从零开始设计前端调理电路,也不必深陷非线性补偿公式的推导泥潭;相反,借助出厂已标定的ZAM6228,配合通用MCU和简单的IO模拟通信,即可实现±0.1°C级别的温度测量精度。


为什么选择ZAM6228?

PT100作为工业测温的经典传感器,其优势毋庸置疑:宽范围、高稳定性、抗电磁干扰能力强。但它的输出是电阻值,典型变化仅为0.385Ω/°C,在-50°C到+150°C区间内仅变化约77Ω。要从中提取精确温度信息,必须解决以下几个难题:

  • 如何消除引线电阻影响?
  • 如何提供稳定的激励电流?
  • 如何实现24位以上分辨率以保证0.1°C精度?
  • 如何完成Callendar-Van Dusen方程的非线性修正?

ZAM6228正是为解决这些问题而生。它内部集成了双极性恒流源(避免热电效应)、差分输入结构(支持三线/四线制接法)、24位Σ-Δ ADC、精密基准电阻以及嵌入式处理器,所有通道均经过出厂校准。用户只需通过I²C读取对应寄存器,就能获得单位为0.01°C的有符号整数温度值——比如25.36°C对应 2536 。

更重要的是,该模块支持8路独立输入,I²C地址可通过跳线设置(默认0x38),非常适合多点分布式测温场景。你不需要额外编写任何标定代码或查表程序,真正做到了“即插即用”。

实际测试中,使用屏蔽双绞线连接PT100,在0~100°C范围内连续采样,标准偏差小于0.05°C,完全满足大多数工业应用需求。


当硬件I²C不够用时:IO模拟才是真灵活

STM32系列虽然普遍配备硬件I²C外设,但在实际项目中你会发现,这些资源经常被其他器件占用——可能是EEPROM、RTC,也可能是触摸控制器。更麻烦的是,硬件I²C有时会因总线锁死(SCL被拉低无法恢复)而导致整个系统卡死,重启才能恢复正常。

这时候, GPIO模拟I²C(Bit-Banging I²C) 就展现出其不可替代的价值。虽然牺牲了一些CPU效率,但它带来了前所未有的控制自由度:你可以精确调整时序、主动规避冲突、甚至在线诊断总线状态。

下面是一个经过验证的轻量级模拟I²C实现框架,适用于STM32F1/F4等主流型号:

// io_i2c.h
#ifndef __IO_I2C_H
#define __IO_I2C_H

#include "stm32f1xx_hal.h"

#define I2C_SCL_PIN     GPIO_PIN_6
#define I2C_SDA_PIN     GPIO_PIN_7
#define I2C_PORT        GPIOB

#define SET_SCL()   HAL_GPIO_WritePin(I2C_PORT, I2C_SCL_PIN, GPIO_PIN_SET)
#define CLR_SCL()   HAL_GPIO_WritePin(I2C_PORT, I2C_SCL_PIN, GPIO_PIN_RESET)
#define SET_SDA()   HAL_GPIO_WritePin(I2C_PORT, I2C_SDA_PIN, GPIO_PIN_SET)
#define CLR_SDA()   HAL_GPIO_WritePin(I2C_PORT, I2C_SDA_PIN, GPIO_PIN_RESET)

#define INPUT_MODE()  do { \
                        GPIO_InitTypeDef gpio = {0}; \
                        gpio.Pin = I2C_SDA_PIN; \
                        gpio.Mode = GPIO_MODE_INPUT; \
                        gpio.Pull = GPIO_PULLUP; \
                        HAL_GPIO_Init(I2C_PORT, &gpio); \
                      } while(0)

#define OUTPUT_MODE() do { \
                        GPIO_InitTypeDef gpio = {0}; \
                        gpio.Pin = I2C_SDA_PIN; \
                        gpio.Mode = GPIO_MODE_OUTPUT_OD; \
                        gpio.Pull = GPIO_PULLUP; \
                        gpio.Speed = GPIO_SPEED_FREQ_LOW; \
                        HAL_GPIO_Init(I2C_PORT, &gpio); \
                      } while(0)

void IO_I2C_Init(void);
void IO_I2C_Start(void);
void IO_I2C_Stop(void);
uint8_t IO_I2C_WriteByte(uint8_t byte);
uint8_t IO_I2C_ReadByte(uint8_t ack);

#endif

关键点在于SDA引脚的方向切换。由于I²C是开漏结构,数据线需双向传输,因此在接收ACK或读取数据前,必须将SDA配置为输入模式;发送数据时再切回开漏输出。这种动态切换确保了协议兼容性。

延时函数 IO_I2C_Delay() 可根据主频微调。例如在72MHz下,插入5μs延时即可实现接近100kHz的标准速率。若追求更高稳定性,可用 __NOP() 内联汇编替代delay_us,减少系统调度抖动。

static void IO_I2C_Delay(void) {
    for(volatile int i = 0; i < 35; i++) __NOP();
}

值得注意的是,ZAM6228的I²C接口对时序要求并不苛刻,只要满足基本的建立/保持时间即可。我们在多个项目中验证过,即使使用较宽松的延时参数,通信成功率仍可达100%。


多设备共用总线的注意事项

本系统中,ZAM6228(地址0x38)与SSD1306 OLED(写地址0x78)共享同一组SCL/SDA引脚。这在物理上完全可行,但需注意以下几点:

  1. 地址冲突检查 :确保各设备I²C地址唯一。OLED通常通过硬件引脚设置地址,务必确认是否与其他设备重叠。
  2. 上拉电阻匹配 :两条线上各加一个4.7kΩ上拉至3.3V。若总线挂载设备过多,可适当减小阻值(如2.2kΩ),但不宜过低以免增加功耗。
  3. 通信隔离 :每次操作前后应严格遵循Start-Stop序列,避免残留电平引发误判。
  4. 速率协调 :OLED对I²C速率敏感,建议控制在200kHz以内,否则可能出现花屏或初始化失败。

OLED显示部分可基于通用SSD1306驱动库封装。以下为温度数据显示示例:

// 显示第n路温度
void Display_Temperature(uint8_t ch, int32_t raw_temp) {
    char buf[20];
    float temp_c = raw_temp / 100.0f;

    sprintf(buf, "CH%d: %.2fC", ch + 1, temp_c);
    OLED_ShowString(0, ch < 4 ? ch * 2 : (ch - 4) * 2, buf);
}

假设屏幕每页显示4路,可通过按键翻页查看全部8路数据。刷新间隔建议设为500ms以上,既保证实时性,又避免频繁通信造成总线拥堵。


工程实践中的常见问题及对策

1. 温度跳动大?试试软件滤波

尽管ZAM6228内置数字滤波,但在强干扰环境下仍可能出现瞬时跳变。简单有效的做法是做 滑动平均滤波 :

#define FILTER_SIZE 3
int32_t filter_buf[FILTER_SIZE] = {0};

int32_t FilteredRead(uint8_t ch) {
    static uint8_t idx = 0;
    int32_t raw = read_zam6228_temperature(ch);

    filter_buf[idx++] = raw;
    if (idx >= FILTER_SIZE) idx = 0;

    int32_t sum = 0;
    for (int i = 0; i < FILTER_SIZE; i++) sum += filter_buf[i];
    return sum / FILTER_SIZE;
}

实测表明,三点均值滤波可在不影响响应速度的前提下显著平滑曲线。

2. 总线通信失败?加入超时机制

纯轮询式I²C可能因设备掉电或线路断开导致死循环。建议在关键操作中添加超时检测:

uint8_t Safe_I2C_Write(uint8_t dev_addr, uint8_t reg, uint8_t data) {
    uint32_t tickstart = HAL_GetTick();
    while (HAL_I2C_IsDeviceReady(&hi2c1, dev_addr<<1, 1, 10) != HAL_OK) {
        if ((HAL_GetTick() - tickstart) > 100) return 0;
    }
    // 后续写操作...
    return 1;
}

对于模拟I²C,也可在Start条件后等待SCL释放,设定最大尝试次数。

3. 抗干扰设计不容忽视
  • 电源去耦 :ZAM6228和STM32的VCC引脚就近并联0.1μF陶瓷电容;
  • 地线处理 :采用星型接地,PT100屏蔽层单点接入系统地;
  • 线缆长度 :I²C总线走线尽量短(<30cm),必要时使用I²C缓冲器(如PCA9515);
  • 传感器接法 :优先采用四线制,彻底消除引线电阻误差。

可扩展性思考:不止于本地显示

当前系统已具备完整的本地监控能力,但进一步拓展潜力巨大:

  • 数据记录 :添加microSD卡模块,按时间戳存储历史温度数据;
  • 远程报警 :接入蜂鸣器或继电器,当某通道超限时自动触发动作;
  • 通信升级 :配合RS485模块(如SP3485),转换为Modbus RTU协议上传至上位机;
  • 无线联网 :替换为ESP32作为主控,或外接WiFi/BLE模块,实现云平台同步;
  • 多类型适配 :前端更换为热电偶模块(如ZAM6224),实现混合信号采集。

事实上,这种“ 模块化传感 + 软件定义通信 + 分级显示/上传 ”的架构,已成为现代嵌入式测控系统的主流范式。它降低了对硬件工程师的模拟电路要求,同时提升了系统的可维护性和迭代速度。


将复杂的温度采集任务交给专业的模块处理,让MCU专注于通信、逻辑与人机交互——这是一种更为高效的设计哲学。ZAM6228的存在,使得原本需要数周调试的高精度测温系统,现在几天内就能完成原型验证。

而对于开发者而言,掌握IO模拟I²C这样的底层技能,不仅是应对资源受限场景的必备手段,更是深入理解嵌入式系统工作原理的重要一步。当你能亲手操控每一个时钟脉冲和数据位时,所谓的“黑盒通信”也就不再神秘。

这种高度集成与自主可控相结合的技术路径,正在引领工业监测设备向更智能、更可靠的方向演进。

多通道温度监测系统的架构设计与数据融合实践 本文详细介绍了基于致远ZAM6228测温模组的多通道温度监测系统架构设计与数据融合实践。系统采用ARM单片机作为核心控制器,通过I²C总线扩展实现24通道温度数据的高精度采集与同步处理,涵盖硬件选型、数字滤波算法、数据校准策略及可靠性设计,为工业温度监测提供完整的解决方案。 阅读详情

相关推荐

致远电子8通道PT100温度测量模块ZAM6228单片机实战程序,OLED显示温度参数,用STM32单片机IO模拟IIC总线

没有官网资料,自己用IO模拟IIC总线通讯

致远ZAM6228测温模组-ARM单片机驱动程序

测温

xiongge8155的博客 1734

STM32单片机驱动ADS124采集PT100温度传感器,包含源代码,ADS124文档和RTD测量基本指南

STM32单片机驱动ADS124采集PT100温度传感器,包含源代码,ADS124文档和RTD测量基本指南

【ZAM6228】8通道热电阻测温模块

ZAM6228模块的I2C有两根地址线,采用7位地址的方式,高5位固定为10010,地址选择如下表所示。

qq_41883039的博客 330

微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器

对于某些用户来说,直接自定义规则可能有难度,所以在这种情况下,我们提供了网页简易模式,网页简易模式下存放了国内一些主流网站爬虫采集规则,在你需要采集相关网站时可以直接调用,节省了制作规则的时间以及精力。微信文章采集下来有很多作用,比如可以将自己行业中最近一个月之内发布的内容采集下来,然后分析文章标题和内容的一个方向与趋势。所以本次介绍八爪鱼简易采集模式下“搜狗公众号”的使用教程以及注意要点。步骤一...

weixin_26712065的博客 3261

用Python实现古诗词填字游戏(三)

古诗词做填字游戏的第三部分代码,也是最核心的部分。实现对诗文和关键字的选定,并确定文字的输出位置。

PosPro的专栏 6119

基于8086八路PT100热敏电阻温度采集

*单片机设计介绍,基于8086八路PT100热敏电阻温度采集。

QQ2193276455的博客 1145

从Live2D到Unreal Engine:2D与3D虚拟数字人核心技术实现路径解析

本文深入解析了从Live2D到Unreal Engine的2D与3D虚拟数字人核心技术实现路径,涵盖技术选型、制作流程与优化技巧。通过对比2D骨骼动画与3D建模渲染的差异,结合实战案例,帮助开发者根据项目需求选择合适方案,提升虚拟数字人的交互体验与视觉效果。

weixin_30379531的博客 149

致远8路测温模组ZAM6228,用C51单片机读取3路温度参数在OLED屏显示

致远ZAM6228测温模组51单片机程序,可在OLED显示温度参数

xiongge8155的博客 719

第五章 PCIe介绍 5.1-5.7

为什么SSD要用PCIe接口?因为它快,比SATA快。通道,PCIe最多可以有32个通道。两个设备之间的PCIe连接,叫做一个Link。如下图,设备A和设备B是个双向连接,两个PCIe设备之间,有专门的发送和接收通道,数据可以同时往两个方向传输,PCIe Spec称这种工作模式为,可以理解为。和PCIe一样,SATA有独立的发送和接收通道。但与PCIe工作模式不一样,同一时间,SATA只有一条通道可以进行数据传输。这种工作模式称为。与SATA单通道不同,PCIe连接可以通过增加通道数扩展带宽。

fengbaobaola的博客 2970

图形化界面无限转圈?CentOS 7的SELinux避坑指南(附命令行修复实录)

本文详细解析了CentOS 7图形界面启动时无限转圈或卡在'starting switch root'的故障原因,主要与SELinux安全策略冲突有关。提供了三种修复方案:临时禁用SELinux、重装策略包和精细调整策略,并分享了长期维护建议,帮助用户平衡系统安全性与可用性。

potato的博客 799

从零构建:STM32模拟I2C驱动ZAM6228测温模组的架构设计与调试陷阱

本文详细介绍了在STM32平台上通过模拟I2C驱动致远ZAM6228测温模组的完整架构设计与调试实践。重点解析了时序精确控制、多通道数据缓存管理策略以及常见调试陷阱的解决方案,为嵌入式开发者提供了一套高效稳定的ARM单片机驱动程序开发方法论。

ooo22的博客 540

Pixel 6 Pro刷Android 13变砖自救指南:fastboot全分区擦除与手动刷入教程

本文提供了一份详细的Pixel 6 Pro在Android 13升级过程中变砖后的自救指南。针对因super分区锁死或动态分区异常导致的无法启动问题,文章核心介绍了通过fastboot命令手动擦除关键分区并逐一刷入官方镜像的完整救砖流程,帮助用户实现系统重建与恢复。

weixin_29208327的博客 373

铂电阻测温 三线制热电阻测温容易忽略的设计细节

以 高精度测温模块ZAM6228 为例,下图中,如果通道CH1离ADC近,它的A、B线PCB走线短,C线由于4个通道共用,需要在PCB上需要额外经过另外3个通道CH2~CH4的接线端子,走线更长。使用常规的5.08mm间距工业端子时,每个通道有3个位端子,C线PCB走线长度多出3*3*5.08=45.7mm,如果用10mil走线宽度,对应的温度偏差约为0.2℃。经测试,PCB走线引入偏差不到0.01℃,对于模块自身0.02%+0.1℃的测温精度,可以忽略,可以完整的得到高测温精度。2024年7月11日。

anlog的专栏 1168

地图可视化类型大全

地图可视化类型大全: 散点地图 网格地图 聚合地图 气泡地图 热力图 Choropleth地图/分级设色地图/分级区域地图/着色地图/分级统计地图(百度百科这样翻译)/等值域地图/分段设色地图 Cartogram地图/变形地图/示意地图 规则形状地图 /RecMap/Demers Cartogram/瓷砖网格地图/DorlingMap 流型图(Flow Map)\流线图\流向图\轨迹地图 复合地图

codeuniverse的博客 3536

【IxNetwork】史上最全IxNetwork测试仪使用精讲(一),图文教程超赞超详细!!!

IXIA使用的是Server-client模式,Server端在测试仪表的主机上,在开机后会随着主机内的操作系统的启动而自动启动,一般情况下不需要人为的手工启动。因此在通常不需要为主机配置专用的显示器和键盘。client端包括两个测试软件: Ixia Explorer和ScriptMate。这两个软件一般安装在测试用计算机上,在仪表自带的主机中也有这两个软件。根据测试项目的不同来选择使用不同的软件。Ixia Explorer主要提供数据流的测试,针对设备的功能进行测试;

风云说通信 2058

从零构建:如何用GPIO模拟I²C协议驱动多通道测温模块

本文详细介绍了如何在ARM Cortex-M0单片机等资源受限环境中,通过GPIO模拟I²C协议驱动致远ZAM6228多通道测温模块。内容涵盖协议原理、GPIO配置、时序实现及多通道数据采集策略,为工业测温和环境监控应用提供高精度、低成本的嵌入式解决方案。

t8u9v0的博客 977

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[学习笔记]超越超级大循环与原生RTOS:事件驱动架构如何改变嵌入式固件的可扩展性

RTC:事件处理器一旦开始,全部状态迁移、进出动作、输出事件必须全部执行完毕才返回;同一个组件,当前处理没结束,不会开始下一条事件。这不是架构给状态机额外施加的限制,这是UML状态图等全部状态机形式化本身固有的语义要求。如果迁移中途可以被打断,状态机会停留在未定义的中间状态。RTC保证两次事件之间,状态机永远处于明确定义的合法状态,便于分析与测试。

MiKiJT的博客 238

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

DPU安全组与ACL性能测试:从规则爆炸到线速卸载的实战指南

本文深入剖析DPU安全组与网络ACL的底层卸载架构,通过两个完整实战测试矩阵,量化评估规则复杂度、有状态连接跟踪(Conntrack)及OVS Offload协同对RoCEv2性能的影响。结合真实故障排查案例与工具输出矩阵,揭示大规模云环境中安全组性能跌落的根因,并给出基于规则聚合与硬件表项优化的最优配置指南。

专注分享DPU、RDMA智能网卡/SSD(固态硬盘)产品测试与优化 352

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

嵌入式:2.STM32底层基础(存储、寄存器、时钟、总线、GPIO、寄存器点灯)

存储系统用来存放程序、数据、设备状态,核心三大作用:存放程序代码、保存运行时数据(全局、局部、栈、堆)、数据持久化(比如W25Q64 Flash,可以搭配文件系统)。

2401_86731574的博客 379

基于STM32的智能浇花系统

本文设计基于STM32F103C8T6的智能浇花系统,集成DHT11、YL-69、MQ-135、GL5528四类传感器,实现温湿度、土壤湿度、CO₂浓度与光照的实时监测。系统支持自动、手动、远程三模式联动控制,通过ESP8266-01S以MQTT协议上云,配合手机APP实现数据可视化与远程指令下发。硬件采用多通道ADC采样、继电器驱动与OLED显示,软件实现精准时序控制与双向通信。测试表明系统稳定可靠,完整覆盖“感知—控制—云联”IoT全链路,具备高扩展性与工程实践价值。

weixin_45732499的博客 176

MCU复位电路不加单片机可行吗?PCB踩坑记

第一版板子长按偶发不触发,经查为Key脚走线穿越DC-DC电感下方,受开关噪声干扰导致判定失败。改用丽晶微EY407-383329(SOT23-6)专用复位ASIC,硬件实现3秒长按、1秒双路互补脉冲输出,无需MCU参与,省去软件消抖与定时器资源。关键点:Key线避开通路、就近加104P去耦、低有效接法正确、输出极性匹配、RESET上拉可靠、扩流器件靠近输出。全靠硬件实现稳定复位,主控死机仍可工作。建议依8项排查清单验证,量产前索取规格书并打样验证。

ELITECHIP_ECM的博客 283

锅炉房已经有PLC,还需要IoT吗?从安全控制到全局能效的智能化升级

无论是工业蒸汽锅炉房,还是酒店、医院等商业热水场景,改造都可以从现有条件出发:先梳理控制系统、仪表和通信情况,再明确安全边界与数据需求;盈电物联网的云边协同思路,是在尽量保留原有控制与仪表设备的基础上,通过IOT控制器补齐数据接入和边缘处理能力,再与云端平台协同,逐步建立运行、能耗与运维之间的数据闭环。锅炉房智能化,不是用IoT取代PLC,也不是简单增加一块远程大屏,而是在保障安全控制独立可靠的基础上,让分散的数据真正服务于运行管理。将告警、排查、处理、复核和维修记录串联起来,形成可追溯的设备档案。

olzorange的博客 291

20 嵌入式系统架构:架构模式、实时操作系统、鸿蒙案例

嵌入式架构模式怎么选、RTOS 和通用操作系统差在哪、优先级反转怎么破?本篇把前后台、中断驱动、管态目态几种结构排成一条演进线,手把手算 RMS 可调度界限、判断任务集能不能跑得动,再把优先级继承与优先级天花板两种解法对上号,配鸿蒙案例讲清工程落地。

weixin_46316564的博客 230

重复网格自动实例化:6400个方块背后的提交成本

这项夹具关闭了G-buffer、AO、GI、阴影、AA、MSAA和大气,用来隔离不透明实例提交成本。本文依据2026年11月9日已合并的PR #792及其中的验证记录撰写,数字不是本次重新运行的测试。这次实现把符合条件的重复不透明网格与材质组合,自动送入现有Vulkan实例化间接绘制路径。EVEngine最近合并的自动实例化改动,针对的正是这段重复工作。它们看起来不像渲染大功能,但位于每对象、每帧的循环里,数量一多就值得测量。真正可复用的是保留场景、构建参数、预热时间和日志汇总工具,再对照同源代码开关。

西风世界 143

注塑机数据采集网关 ZK-D1/D3 如何与 MES/IOT 平台对接并展示数据

本文系统阐述注塑车间数据采集难题及ZK-D1/D3网关解决方案,聚焦设备异构协议统一、数据建模规范与四层链路对接。通过明确设备唯一标识、统一命名规则与上行协议选择,实现多品牌注塑机数据标准化采集与传输。结合MQTT/HTTP/OPCUA多协议支持,构建从设备层到MES/IOT平台的完整链路,支撑实时看板、历史趋势、OEE分析与报警管理。强调前期标准化与端到端验证的重要性,确保数据可靠落地,赋能智能制造。

专业采集注塑机数据,为mes系统提供数据服务! 254
上一篇: 34、利用 VBA 处理外部数据和文件
下一篇: 56、神经元树突中的电压依赖性事件与非常规计算
python9snake
博客等级 码龄1天 0粉丝 1724原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值