STM32微控制器在GPS_GPRS车载终端中的应用与实践

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文介绍了一种利用STM32微控制器构建的GPS和GPRS功能集成的车载终端设计。该终端通过GPS模块获取实时位置信息,并通过GPRS模块实现远程数据通信,适用于车辆监控、调度等多种应用。同时,详细阐述了STM32的技术特性、GPS和GPRS的原理及系统设计的实现细节,展示了该车载终端在智能交通系统中的实际应用和价值。 基于STM32的GPS_GPRS车载终端设计.zip

1. STM32微控制器简介与优势

STM32微控制器是由STMicroelectronics(意法半导体)生产的一系列32位ARM Cortex-M微控制器。这一系列MCU因其高性能、高集成度和灵活的配置选项而受到广泛欢迎,特别是在嵌入式系统领域。

1.1 STM32的架构特点

STM32微控制器基于ARM Cortex-M处理器,根据不同的性能和功能需求,分为多个系列,如STM32F0、STM32F4等。它们通常集成了丰富的外设,如ADC、PWM、通信接口等,减少了外部组件的需要,并降低了整体成本。

1.2 STM32的优势

  • 性能 :具有高计算能力和处理速度,适合复杂算法的运行。
  • 功耗管理 :拥有多种低功耗模式,适合电池供电的应用。
  • 开发工具 :支持包括Keil、IAR、STM32CubeMX等在内的多种开发和调试工具,简化开发流程。
  • 生态系统 :拥有庞大的开发社区和丰富的开源资源,便于开发者学习和获取支持。

STM32微控制器在设计上注重灵活性,可广泛应用于工业控制、智能家居、消费电子、医疗设备等多种领域,是众多电子工程师和开发者的首选。随着物联网和工业4.0的发展,STM32的这些优势更使其成为市场上的有力竞争者。

2. GPS系统原理与数据解析

2.1 GPS系统概述

2.1.1 GPS系统组成与工作原理

全球定位系统(GPS)由三大部分组成:空间部分、控制部分和用户部分。空间部分由一系列运行在地球中轨轨道上的卫星组成,这些卫星持续不断地向地面发送有关自身位置和时间的信息。控制部分包括位于世界各地的监测站和主控制站,它们负责监控卫星运行状态并提供必要的维护和轨道修正。用户部分则是指接收GPS信号并从中解算出位置信息的接收器,广泛应用于汽车导航、测绘、航空等多个领域。

GPS的工作原理基于卫星导航的三角测量法。用户设备通过接收至少四颗GPS卫星发出的信号,利用这些信号的传播时间差来计算信号传输距离,通过这些距离与卫星的精确位置构建出三角几何关系,从而解算出接收器的三维坐标位置,也就是经度、纬度和海拔高度。

2.1.2 GPS信号的捕获与跟踪

为了从噪声中识别出GPS信号并对其进行处理,首先需要捕获信号,即确定信号的载波频率和码相位。捕获后,需要对信号进行跟踪,以便持续获取更准确的时间和位置信息。这通常涉及几个步骤:首先进行信号的搜索,然后进行信号的同步,最终进入信号的锁定。

捕获GPS信号一般采用多普勒频移原理,通过假设不同的多普勒频移来搜索可能的载波频率。一旦发现潜在信号,系统就会锁定该信号,然后基于精确的时钟开始解码从卫星发送的导航数据。这个数据包括卫星轨道参数、时钟校正数据和其他系统状态信息。这些信息对于后续的信号跟踪和最终的位置计算至关重要。

2.2 GPS数据格式与解析

2.2.1 NMEA标准数据格式

GPS接收器通常输出遵循NMEA 0183标准的数据。NMEA是National Marine Electronics Association的缩写,它是海洋电子设备间数据交换的标准协议。尽管最初是为海洋应用设计的,但NMEA 0183也广泛用于地面应用。该标准定义了数据传输的电气特性、信号级别、传输协议以及各种语句(或数据块)的格式。

NMEA数据语句以美元符号($)开始,后跟五个字段:语句名称、数据标识符、数据字段、结束符和校验和。最常用的数据语句是GGA(全球定位系统定位信息)、GLL(地理位置信息)、GSA(设备设置信息)和GSV(可见的GPS卫星信息)等。

2.2.2 数据解析方法与实例

要解析NMEA格式的数据,通常采用编程语言提供的字符串处理功能。以Python为例,可以使用split()函数根据逗号分割语句,然后按索引提取出所需的信息。例如,解析GGA语句来获取时间、纬度、经度等关键信息。

解析过程可以分为以下几个步骤:

  1. 读取一行NMEA数据。
  2. 去除行尾的换行符。
  3. 通过美元符号识别数据语句的开始。
  4. 使用逗号分割语句为单独的字段。
  5. 解析字段以提取所需的数据信息。

下面是一个简化的Python代码示例,用于解析NMEA语句:

def parse_nmea_sentence(sentence):
    # 移除行尾的换行符
    sentence = sentence.strip()
    # 获取字段并分割
    fields = sentence.split(',')
    # 提取经纬度信息
    latitude = parse_degrees(fields[2]) + parse_minutes(fields[3])
    longitude = parse_degrees(fields[4]) + parse_minutes(fields[5])
    # 提取时间信息
    time = fields[1]
    # 解析纬度和经度字段
    def parse_degrees(degrees):
        degrees, minutes = degrees.split('.')
        return float(degrees) + float(minutes) / 60
    def parse_minutes(minutes):
        minutes, seconds = minutes.split('.')
        return float(minutes) / 60 + float(seconds) / 3600
    return {
        "latitude": latitude,
        "longitude": longitude,
        "time": time,
    }

# 示例NMEA数据
nmea_sentence = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47"
parsed_data = parse_nmea_sentence(nmea_sentence)
print(parsed_data)

在这个例子中,我们首先定义了一个函数 parse_nmea_sentence ,用于读取和解析NMEA语句。接着,我们定义了辅助函数 parse_degrees parse_minutes 来转换度数、分钟和秒到十进制格式。最终,我们使用一个示例的GPGGA语句来展示解析过程。这个简单的解析器可以提取出时间、纬度和经度等信息,并将其打印出来。

请注意,实际的应用场景可能需要更复杂的处理,包括异常处理、更精确的浮点数解析以及考虑到数据的校验和验证。解析代码也可以根据实际需求进行扩展,以便支持更多种类的NMEA数据语句。

3. GPRS通信技术及应用

3.1 GPRS技术基础

3.1.1 GPRS技术特点与应用领域

GPRS(General Packet Radio Service,通用分组无线业务)是一种基于现有GSM(Global System for Mobile Communications,全球移动通信系统)系统的分组交换技术。GPRS技术允许用户以分组的方式发送和接收数据,与传统的电路交换通信方式相比,它具有显著的优势,如更高的数据传输速度、更有效的频谱使用效率以及支持实时在线和按流量计费等。

GPRS技术特点主要体现在以下几个方面:

  • 始终在线 :GPRS用户可以一直连接到网络,不需要像拨号上网那样建立连接,因此能够实现快速的数据传输。
  • 按流量计费 :用户仅需为传输的数据量付费,而不是为通信的时长付费,这一点为用户带来了更大的经济性。
  • 高速数据传输 :GPRS的最大理论传输速率可达171.2 kbps,实际使用中根据网络条件和共享带宽可以达到40-60 kbps。
  • 多接入支持 :GPRS支持多种类型的终端接入,包括手机、笔记本电脑、掌上电脑等。
  • 广泛的覆盖范围 :GPRS网络几乎覆盖了所有的GSM网络覆盖区域。

GPRS技术的应用领域非常广泛,包括:

  • 移动互联网接入 :允许用户通过手机等移动设备访问互联网,浏览网页、收发邮件等。
  • 即时消息与社交媒体 :GPRS为各种即时通讯软件和社交媒体应用提供了良好的数据传输支持。
  • 远程数据采集 :在各种远程监控和数据采集系统中,GPRS提供了一个可靠、高效的无线数据传输途径。
  • 移动办公 :商务人士可以利用GPRS随时随地进行远程办公,处理电子邮件、查看企业数据库等。

3.1.2 GPRS网络架构与通信原理

GPRS网络架构建立在现有的GSM网络之上,通过引入分组控制单元(PCU)和分组交换节点(SGSN和GGSN)扩展了GSM网络功能,使得网络能够支持数据通信。

GPRS网络架构主要包括以下几个组成部分:

  • 移动台(MS) :包括各种支持GPRS功能的终端设备,如智能手机、GPRS模块等。
  • 基站子系统(BSS) :负责无线信号的收发,包括基站(BTS)和基站控制器(BSC)。
  • 分组控制单元(PCU) :位于BSC内部,负责处理分组数据。
  • 服务GPRS支持节点(SGSN) :负责管理GPRS用户在特定区域内的移动性,如认证、加密、逻辑链路管理等。
  • 网关GPRS支持节点(GGSN) :作为GPRS网络与外部数据网络(如互联网)之间的网关,负责路由分组数据。

GPRS的通信原理是通过将数据封装成小的数据包进行传输,这些数据包可以在GPRS支持的无线信道中独立传输,从而允许多个用户共享同一传输信道。当移动台需要发送数据时,它会通过基站子系统到达SGSN,再通过GGSN发送到外部网络。接收数据时,数据包从外部网络到达GGSN,然后经过SGSN和基站子系统传送到移动台。

GPRS通信的一个重要优势是它采用了统计时分多址(TDMA)技术,允许在同一频率上为多个用户分配不同时隙,从而实现了信道的复用。这种技术大大提高了无线频谱的使用效率,并支持了更多的并发用户。

3.2 GPRS模块的应用开发

3.2.1 GPRS模块的选择与配置

在开发涉及GPRS通信的应用时,选择合适的GPRS模块是关键步骤之一。GPRS模块通常已经包含了完整的GPRS网络接入功能,用户只需要通过简单的串口通信就能实现数据的发送和接收。

在选择GPRS模块时需要考虑以下几个方面:

  • 兼容性 :模块需要与开发板或控制器兼容,比如电压、接口类型等。
  • 网络覆盖 :选择的模块应该支持当前地区的GPRS网络频段。
  • 稳定性 :需要选择有良好市场反馈和稳定性的品牌和型号。
  • 成本 :考虑项目的预算和模块成本,找到性价比高的选择。
  • 功能 :根据应用需求选择带有必要功能的模块,比如是否需要支持TCP/IP协议、是否需要GPS功能等。

常用的GPRS模块品牌有Simcom、Quectel、Telit等,这些厂商提供的模块普遍支持标准AT指令集,这使得模块的编程和配置相对简单。典型的GPRS模块如Simcom的SIM900A、Quectel的EC21等都广泛应用于各种嵌入式系统和物联网项目中。

GPRS模块配置通常涉及以下步骤:

  • 物理连接 :将GPRS模块通过串口连接到主控制器或PC。
  • AT指令配置 :通过串口工具(如PuTTY、SecureCRT)或开发板的串口调试器发送AT指令进行模块的基本配置,包括网络注册、APN设置等。
  • 网络设置 :根据所处区域的运营商设置APN(Access Point Name,接入点名称),以及可能需要的用户名和密码。
  • 通信模式选择 :根据实际应用需求,可能需要设置模块的通信模式为TCP或UDP等。

3.2.2 GPRS数据传输与AT指令集

GPRS模块与控制器或计算机之间的数据传输主要依靠AT(Attention)指令集。AT指令集是一系列用于控制和配置模块的文本命令,它允许开发者通过串口或其他接口与模块通信。

一个典型的GPRS数据传输过程可以分为以下几个步骤:

  1. 启动模块 :发送“AT+CGATT=1”指令,激活GPRS功能。
  2. 设置APN :使用“AT+CGDCONT=1,”APN“指令设置接入点名称,APN是连接到Internet的网关。
  3. 连接网络 :通过“ATD 99 **1#”或相应的AT指令连接到网络。
  4. 设置PDP(Packet Data Protocol)上下文 :通过“AT+CGACT=1”指令激活上下文。
  5. 连接TCP/IP服务器 :如果需要连接到服务器,使用“AT+CIPSTART”指令来启动TCP或UDP连接。
  6. 数据传输 :通过“AT+CIPSEND”指令发送数据。
  7. 断开连接 :通过“AT+CIPCLOSE”指令来关闭当前的通信连接。
  8. 断开网络连接 :通过“AT+CGACT=0”指令来停止GPRS服务。

例如,以下是一个通过GPRS模块发送HTTP请求的AT指令序列:

AT+CGATT=1
OK

AT+CGDCONT=1,"IP","APN_NAME"
OK

ATD*99***1#
CONNECT

AT+CIPSTART="TCP","目的地IP","目的地端口"
OK

AT+CIPSEND=数据长度
> 数据内容
数据长度字节发送完毕

AT+CIPCLOSE
OK

AT+CGACT=0
OK

在实际应用中,可能需要使用特定的AT指令来获取模块状态或响应,比如模块初始化完成后获取模块的IMEI号码,或者在连接失败时获取错误代码等。指令集中的指令可以根据具体的模块手册来选择使用。

3.3 GPRS模块的软件集成

3.3.1 GPRS模块集成到嵌入式系统

将GPRS模块集成到嵌入式系统中,关键在于开发一套软件框架,该框架能够有效管理GPRS模块的通信状态和数据传输。在嵌入式系统中,通常会采用中断驱动或轮询的方式来管理串口通信,以及使用多线程技术来处理网络连接和数据传输任务。

以下是集成GPRS模块到嵌入式系统的一些基本步骤:

  1. 硬件连接 :将GPRS模块通过串口连接到微控制器的相应UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)端口。
  2. 初始化串口 :配置微控制器的串口参数,比如波特率、数据位、停止位等,以匹配GPRS模块的默认或推荐设置。
  3. 初始化GPRS模块 :编写初始化函数,通过串口发送AT指令来初始化GPRS模块。
  4. 实现AT指令解析 :开发函数来解析模块返回的响应,判断初始化是否成功,以及模块的当前状态。
  5. 网络连接管理 :编写函数来处理网络连接的建立和断开,以及在连接失败时进行重连操作。
  6. 数据传输管理 :实现数据发送和接收的函数,这些函数能够处理数据的封装、传输、接收确认等操作。
  7. 错误处理与异常管理 :实现错误检测和异常处理机制,确保网络连接的稳定性和数据传输的可靠性。

3.3.2 GPRS模块与应用程序的交互

嵌入式系统中的应用程序需要与GPRS模块进行有效交互,以实现具体的数据通信和网络应用功能。这通常涉及以下几个方面:

  • 发送数据 :应用程序需要调用发送函数来向远程服务器发送数据。
  • 接收数据 :应用程序需要实现接收数据的回调或事件处理函数,以处理模块接收到的数据。
  • 状态监控 :应用程序需要监控GPRS模块的工作状态,包括信号强度、连接状态、电量信息等。
  • 配置更新 :应用程序可能需要提供远程或本地更新GPRS模块配置的接口。

在嵌入式Linux系统中,可以通过建立TCP/IP套接字来进行数据传输。以下是一个简单的TCP数据发送的示例代码:

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>

int main() {
    int sock;
    struct sockaddr_in server;

    char message[] = "Hello, this is a test message.";
    char server_reply[2000];

    sock = socket(AF_INET, SOCK_STREAM, 0);
    server.sin_addr.s_addr = inet_addr("192.168.1.101");
    server.sin_family = AF_INET;
    server.sin_port = htons(5000);

    if (connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0) {
        perror("connect failed. Error");
        return 1;
    }

    if (send(sock, message, strlen(message), 0) < 0) {
        perror("Send failed");
        return 1;
    }

    if (recv(sock, server_reply, 2000, 0) < 0) {
        perror("recv failed");
    }

    puts(server_reply);

    close(sock);
    return 0;
}

在上面的代码中,我们首先创建了一个TCP套接字,然后连接到了服务器的IP地址和端口。之后,我们使用 send 函数发送了一条消息,并使用 recv 函数接收服务器的响应。最后,我们关闭了套接字连接。

在集成GPRS模块的嵌入式系统中,应用程序的开发可能还需要考虑到内存管理和多任务处理,特别是当系统中需要执行其他并行任务时,需要确保GPRS模块的通信操作不会影响到其他任务的正常运行。

4. 车载终端系统设计细节

4.1 车载终端系统需求分析

4.1.1 系统功能规划与设计目标

车载终端系统的主要功能规划与设计目标需要考虑实时性、可靠性以及扩展性。在智能交通系统中,车载终端应具备以下基本功能:

  • 实时定位跟踪 :利用GPS模块实现对车辆的实时位置追踪,确保信息的时效性。
  • 数据存储与处理 :存储历史轨迹数据,处理接收到的GPS信号,转换成可读的位置信息。
  • 远程通信 :通过GPRS模块与中央服务器通信,实现数据上传和指令接收。
  • 安全机制 :确保通信加密,防止数据泄露,提供车辆防盗、报警等功能。
  • 用户友好的界面 :为驾驶员和后台管理人员提供简洁直观的操作界面。
  • 扩展性 :系统设计应考虑未来可能的功能升级,如车载娱乐、导航等功能的集成。

设计目标应聚焦于以下几点:

  • 可靠性 :确保系统在恶劣环境下能够稳定运行。
  • 高效性 :系统资源的合理利用,包括CPU、内存和通信模块。
  • 用户友好 :直观的操作流程和简洁的用户界面设计。
  • 可维护性 :便于后续的系统维护和升级。

4.1.2 系统的硬件架构设计

车载终端硬件架构设计是实现功能规划和设计目标的关键步骤。硬件架构设计需考虑模块化和集成度,以适应快速变化的技术要求和市场需要。典型的车载终端硬件架构应包括以下几个模块:

  • 微控制器单元 :作为车载终端的控制中心,负责协调各模块的运行,通常使用STM32这类高性能微控制器。
  • GPS接收模块 :负责接收并解析GPS信号,提供实时位置信息。
  • GPRS通信模块 :负责数据传输,保证车载终端与远程服务器之间的通信。
  • 存储单元 :如EEPROM或SD卡,用于存储定位数据和其他必要信息。
  • 输入/输出接口 :提供人机交互,包括显示屏、按键、以及可能的声光报警装置。
  • 电源管理模块 :提供稳定的电源,包括电池管理功能以及电源监控。

为了实现系统的高效运行,设计中还应考虑各模块之间的接口标准化,以及系统总体的功耗控制。

4.2 车载终端软件设计

4.2.1 软件架构与功能模块划分

车载终端软件架构设计需要确保软件系统的灵活性、可维护性和可扩展性。一个典型的车载终端软件架构可以分为以下几个模块:

  • 初始化模块 :系统启动时进行硬件初始化和配置。
  • 主控模块 :负责整个系统的调度和控制,包括任务的优先级分配和异常处理。
  • GPS数据处理模块 :负责解析GPS信号并处理位置信息。
  • 通信模块 :负责实现与远程服务器之间的数据交互,包括发送和接收数据。
  • 用户界面模块 :提供人机交互界面,包括显示车辆状态和接收用户指令。
  • 存储管理模块 :管理本地存储的读写操作,保证数据的完整性和安全性。

各模块间通过定义良好的API进行交互,确保模块的独立性和可替换性。软件架构应采用模块化设计,便于后续功能的增加和修改。

4.2.2 软件设计模式与实现方法

在软件设计过程中,合理的设计模式能够有效提高系统的质量。对于车载终端,常用的设计模式包括:

  • 单例模式 :确保全局有且只有一个实例,适用于GPS模块和通信模块的管理。
  • 工厂模式 :用于创建不同类型的对象,例如根据用户需求动态生成不同格式的数据报告。
  • 观察者模式 :实现消息的发布和订阅,比如当GPS数据更新时,实时通知其他模块。

在具体实现上,车载终端软件一般使用C/C++语言进行开发,以确保性能和资源利用效率。同时,为了保证系统的稳定性和抗干扰能力,代码中应包含异常处理机制和必要的冗余设计。例如,可以通过增加心跳包检测机制来确保远程通信的稳定性。

考虑到软件的可维护性和可读性,应遵循编码规范,并进行定期的代码审查。此外,软件版本控制也是不可或缺的,通常使用如Git这样的版本控制系统来管理代码变更。

由于车载终端系统的复杂性,软件模块化设计和合理的软件架构模式的选择对系统的成功至关重要。合理的模块划分和设计模式的应用能够大幅提高系统的可维护性和扩展性。

5. GPS和GPRS模块的硬件设计与集成

5.1 硬件设计原则与方法

在进行GPS和GPRS模块的硬件设计时,我们需要遵循一定的原则和方法来确保最终产品的稳定性和可靠性。以下为硬件设计的流程以及在每个步骤中应该注意的关键点。

5.1.1 硬件设计流程与关键点

在硬件设计流程中,我们要经历需求分析、方案设计、原理图设计、PCB布局、PCB布线、样品测试以及问题修改等环节。

  1. 需求分析: 首先,分析产品功能需求,确定GPS和GPRS模块的类型及其与其他电子部件的兼容性。
  2. 方案设计: 基于需求分析结果,选择合适的GPS和GPRS模块,并设计系统的初步方案。此时,还需要考虑信号的接收质量、功耗、尺寸和成本等因素。
  3. 原理图设计: 绘制电路原理图,确保电路设计满足信号的完整性、电源的稳定性和电磁兼容性。
  4. PCB布局: 进行PCB布局时,应将关键组件放置在合适的位置,比如GPS天线应该靠近边缘以确保良好接收信号。
  5. PCB布线: 在布线过程中,应避免信号间的串扰,同时注意高速信号的传输线宽和阻抗匹配。
  6. 样品测试: 制作样品并进行功能和性能测试,确保硬件的稳定性。
  7. 问题修改: 根据测试结果进行必要的修改和优化。

5.1.2 硬件电路设计与优化

在硬件电路设计与优化时,需要对电路进行细致的调整,以确保电子设备的性能达到设计要求。

  1. 电源管理: 设计高效的电源管理模块,保证设备在低功耗状态下也能稳定工作。
  2. 信号完整性分析: 通过仿真工具验证高速信号的完整性,确保数据的准确传输。
  3. 电磁兼容性(EMC): 对电路进行EMC测试,减少电磁干扰对GPS信号的影响。
  4. 热管理: 对于发热量较大的模块,设计合适的散热方案,确保长期稳定工作。

5.2 硬件模块集成与测试

在硬件模块集成之后,必须进行详尽的测试来验证硬件设计是否满足系统要求。

5.2.1 硬件集成步骤与调试技巧

硬件集成是将各个电路模块组装成一个完整的系统的过程。这包括了机械组装、电气连接等步骤。在调试阶段,工程师需要根据设计文档逐一验证各个模块的功能,如下:

  1. 功能测试: 验证模块的每个功能是否按照预期工作。
  2. 信号测试: 使用示波器、逻辑分析仪等工具检查关键信号的波形是否正确。
  3. 性能测试: 测试GPS模块的定位精度和GPRS模块的通信速率。
  4. 环境测试: 模拟不同环境条件,比如高温、低温、震动等,测试硬件的可靠性。

5.2.2 系统测试与性能评估

在硬件模块集成和调试之后,进入系统级的测试与性能评估阶段,以下是测试的几个关键方面:

  1. 集成测试: 确保硬件模块在集成后依然保持稳定性和兼容性。
  2. 性能评估: 测试产品的关键性能指标,如GPS模块的捕获时间、GPRS模块的数据吞吐量等。
  3. 压力测试: 在极限条件下测试系统性能,确保其能够在极端情况下正常运行。
  4. 用户体验测试: 收集使用者反馈,评估产品的实际使用情况,以指导后续产品的改进。

通过上述的步骤和方法,可以确保GPS和GPRS模块的硬件设计与集成能够满足车载终端系统的需求,实现准确的定位和稳定的无线通信。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文介绍了一种利用STM32微控制器构建的GPS和GPRS功能集成的车载终端设计。该终端通过GPS模块获取实时位置信息,并通过GPRS模块实现远程数据通信,适用于车辆监控、调度等多种应用。同时,详细阐述了STM32的技术特性、GPS和GPRS的原理及系统设计的实现细节,展示了该车载终端在智能交通系统中的实际应用和价值。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值