STM32H750VB CAN口使用快速上手笔记

stm32h750vet6的总结(1) 基于高性能Arm Cortex-M7 32位RISC内核,工作频率高达480 MHz.集成了高速嵌入式存储器和高达2 MB的双组闪存、高达1 MB的RAM(包括192 KB的TCM RAM、高达864 KB的用户SRAM和4 KB的备份SRAM),以及连接到APB总线的各种增强型I/O和外设, AHB 总线、2x32 位多 AHB 总线矩阵和支持内部和外部存储器访问的多层 AXI 互连。如果将一个函数移植到另一个。在函数内部定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也就是全局变量。 阅读详情
AI摘要

本文为F103系列老手快速掌握H750 VB平台的FDCAN接口提供指南,重点介绍其10MBIT/S的高速率特性及配置方法。通过CUBEMX进行时钟、引脚配置,详细解析波特率计算,并给出发送、接收函数及中断处理示例。

:),作为多年的程序老手了,学习新的东西已经木有太多的耐心了,现在的处理器平台强大到早就过了那个需要对所有单 片机资源精打细算的年代了,新的开发工具也变得非常强大傻瓜化,从F103到H750平台硬件资源的更新,让使用也亦一些不习惯,本文为F103系列老手快速上手H750笔记之CAN口篇:)
正题:)H750VB的CAN口为新的FDCAN,最看重的是支持10MBIT/S的速率,这个是很舒服,大大的提高的通信能力,测试了一下,1MB的速率下,传输一个8字节的标准ID数据帧为120uS的时间,用FDCAN使用2MB的速率,传输时间就到了73uS左右,(这里因为仲裁帧还是用的1MB速率),用在一些高频率小数据传输场合极度合适:),下面说怎么用:)
还是用CUBEMX来先进行配置:)先是时钟,CPU480MHZ,CAN选择PLL1Q=40MHZ,下图:)在这里插入图片描述
在这里插入图片描述
引脚配置,如图:)
在这里插入图片描述
基本功能配置
在这里插入图片描述
其他的不做太多说明,这里对波特率说明一下:)
仲裁段can波特率= fdcan_ker_ck/Nominal Prescaler/(Nominal Sync Jump Width+Nominal Time Seg1 +Nominal Time Seg1 )
仲裁段波特率=40/1/(1+31+8)=1Mbit/S
数据段can波特率= fdcan_ker_ck/Nominal Prescaler/(Nominal Sync Jump Width+Nominal Time Seg1 +Nominal Time Seg1 )
数据段波特率=40/1/(1+14+5)=2Mbit/S
这几个数据的组合,我一般Sync Jump Width设定为1,Nominal Time Seg1 >Nominal Time Seg2*3:),因为Nominal Time Seg1包含了Propagation_segment段。
实际测试通信效果非常好:)
然后是中断设置,我的应用是发送不中断,接收产生中断并处理数据,如下图:)
在这里插入图片描述
点击产生代码,然后到MDK里面:)
在这里插入图片描述
主程序 的初始化程序会产生这样一个初始化,但这个初始化只是初始化的硬件部分和IO,中断这些都不在这里初始化,需要自行增加:)
//下面这些中断需要自己打开
在这里插入图片描述

__HAL_FDCAN_ENABLE_IT(&hfdcan1, FDCAN_IT_RX_FIFO0_NEW_MESSAGE);//打开FIFO0新信息中断
HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);//打开FDCAN1_IT0_IRQn中断,
// HAL_NVIC_EnableIRQ(FDCAN1_IT1_IRQn);
/* Configure Rx filter */
//初始化接收的ID码过滤器
sFilterConfig.IdType = FDCAN_STANDARD_ID;
sFilterConfig.FilterIndex = 0;
sFilterConfig.FilterType = FDCAN_FILTER_MASK;
sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
sFilterConfig.FilterID1 = 0x0;
sFilterConfig.FilterID2 = 0x0; // For acceptance, MessageID and FilterID1 must match exactly
HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig);

//配置CAN口FIFO0深度为0,这里因为接收的信息比较少
/* Configure Rx FIFO 0 watermark to 2 /
HAL_FDCAN_ConfigFifoWatermark(&hfdcan1, FDCAN_CFG_RX_FIFO0, 2);
/
Activate Rx FIFO 0 watermark notification */
//启动激活接收FIFO0,因为只用到接收FIFO0
HAL_FDCAN_ActivateNotification(&hfdcan1, FDCAN_IT_RX_FIFO0_WATERMARK, 0);
HAL_FDCAN_Start(&hfdcan1);//启动CAN1口
这里就完成启动CAN1口了,可以发送,可以接收CAN数据了:)
先定义两个变量,发送和接收的描述变量
FDCAN_RxHeaderTypeDef FDCAN1_RxHeader;
FDCAN_TxHeaderTypeDef FDCAN1_TxHeader;

下面是发送函数,这里一定要注意字节数只能用定义的宏来做,不然不对,和以前不一样,:)
在这里插入图片描述
void CAN_wrMsg1 (CanTxMsg *msg) {//发送CAN数据帧
FDCAN1_TxHeader.Identifier=msg->StdId; //32位ID
FDCAN1_TxHeader.IdType=FDCAN_STANDARD_ID;//标准帧FDCAN_STANDARD_ID
FDCAN1_TxHeader.TxFrameType=FDCAN_DATA_FRAME ;//数据帧
FDCAN1_TxHeader.DataLength=FDCAN_DLC_BYTES_8;//数据长度=8字节
FDCAN1_TxHeader.ErrorStateIndicator=FDCAN_ESI_ACTIVE;
FDCAN1_TxHeader.BitRateSwitch=FDCAN_BRS_ON;//打开CAN速率切换 FDCAN_BRS_OFF;//关闭速率切换
FDCAN1_TxHeader.FDFormat=FDCAN_FD_CAN;//FDCAN模式 FDCAN_CLASSIC_CAN;//传统的CAN模式
FDCAN1_TxHeader.TxEventFifoControl=FDCAN_NO_TX_EVENTS; //无发送事件
FDCAN1_TxHeader.MessageMarker=0;
TX_Statues=HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1,&FDCAN1_TxHeader,msg->Data);//发送
//HAL_FDCAN_AddMessageToTxBuffer(&hfdcan1,&FDCAN1_TxHeader,msg->data,1);//发送
}
接收函数:)CAN_ID,帧格式等除了数据都在 FDCAN1_RxHeader变量里,数据在msg_data指向的数据缓存中:)
在这里插入图片描述
void CAN_rdMsg (CAN_msg *msg) {
//提取FIFO0中接收到的数据
HAL_FDCAN_GetRxMessage(&hfdcan1,FDCAN_RX_FIFO0,&FDCAN1_RxHeader,msg->data);
// HAL_FDCAN_GetRxMessage(&hfdcan1,FDCAN_RX_BUFFER0,&FDCAN1_RxHeader,msg->data);
}
这就是CAN操作的其本变量和函数了,老手有这些基本能快速上手,常规数据传输基本就这些,其他的如J1939等不在此讨论了:)另外还亦中断处理:)
void FDCAN1_IT0_IRQHandler(void){

 if (__HAL_FDCAN_GET_FLAG(&hfdcan1, FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE) != 0U){//是新数据接收中断
  /* Clear the Rx Buffer New Message flag */
  __HAL_FDCAN_CLEAR_FLAG(&hfdcan1, FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE);//清除中断标志
    CAN_rdMsg (&CAN_RxMsg);                       // 读取CAN新的数据帧
 }

}
其他的中断处理可以依此类推,:)

STM32H750VB FDCAN实战:从经典CAN到10Mbps高速通信的迁移指南 本文详细介绍了STM32H750VB FDCAN模块从经典CAN迁移到10Mbps高速通信的实战指南。通过对比FDCAN与经典CAN的关键差异,提供CubeMX配置技巧、HAL库代码实现及性能优化建议,帮助开发者快速掌握高速CAN通信技术,适用于工业4.0和智能驾驶等场景。 阅读详情

相关推荐

STM32H7无感FOC电机控制开发板硬件设计解析

无传感器磁场定向控制(无感FOC)是现代BLDC与PMSM电机驱动的核心技术,其本质是通过电流、电压等可观测量实时估算转子位置与速度,摆脱物理传感器依赖。实现高精度无感FOC需兼顾算法实时性、信号采样同步性与功率级响应确定性。ARM Cortex-M7内核MCU凭借双精度FPU、高速主频与高级定时器资源,成为中功率工业驱动的理想计算平台;而三电阻电流采样、同步ADC触发、硬件死区保护等电路设计,则直接决定FOC环路稳定性与抗扰能力。本文以一款基于STM32H723VE的工程级电机开发板为例,深入剖析其在无感

weixin_33240461的博客 254

STM32H750 更好用的CANFD 用例详解

目录前言Message RAM分配STM32工程搭建串口配置100us定时器FDCAN配置Bus-Off处理新消息接收处理发送处理使用Xavier配合测试一下完整工程下载关于用作Classic CAN微信公众号 前言 参考前几篇: Jetson Xavier/XavierNX/TX2 CANFD 配置使用 STM32 CANFD 基础知识 STM32G474 CANFD 用例详解 STM32H7系列的FDCAN目前最大也支持3路, 如STM32H730/723/725/733/735等, Message

weifengdq的专栏 1万+

OpenEAI-Platform:开源6+1自由度机器人基座与嵌入式VLA模型实战

机器人智能体是实现具身AI的核心载体,其本质是感知-决策-执行闭环系统。理解多模态融合原理、实时控制架构与硬件协同设计,是构建可落地VLA(视觉-语言-动作)系统的关键技术基础。OpenEAI-Platform作为少有的全栈开源平台,以‘6+1自由度’创新解耦运动与触觉感知,并采用mmap轻量通信替代ROS2,在Jetson Orin Nano上实现23FPS端到端VLA推理与3.2ms确定性控制延迟。它不仅提供标准ROS2兼容数据接口,更深度整合力觉反馈通道与INT8量化VLA模型,显著提升动态抓取鲁棒性

weixin_33787529的博客 359

STM32本质是MCU芯片,不是开发板

STM32是意法半导体推出的基于ARM Cortex-M内核的32位微控制器(MCU)芯片家族,其核心在于硬件资源调度与外设状态机协同。理解其存储器映射、时钟树架构和寄存器级操作原理,是实现高可靠嵌入式系统的基础。该技术具备确定性实时响应、低功耗与工业级外设集成等价值,广泛应用于物联网网关、电机控制、传感器融合及工业通信(如CAN、LIN、USB Host)等场景。本文聚焦‘stm32 adc切换通道’‘stm32 can通信突然连不上’等典型问题背后的真实硬件约束与系统性设计逻辑。

weixin_33984032的博客 418

嵌入式工程师进阶:从裸机到量产的七道硬核关卡

嵌入式系统开发远不止点亮LED或调用HAL库,其本质是软硬协同的系统工程——涉及启动流程、中断优先级、RTOS调度机制、寄存器级驱动、低功耗时序约束及通信协议栈底层实现。理解CMSIS标准、掌握FreeRTOS任务状态迁移与Tick机制,是构建高可靠固件的基础;而真实量产场景中的HardFault定位、DMA双缓冲配置、STOP模式唤醒偏差等难题,往往源于对芯片手册时序图、电源轨稳定性及编译链接过程的深度认知。本内容聚焦进阶工程师能力跃迁,覆盖STM32H7平台下的GCC工具链实战、逻辑分析仪协同调试、外设

weixin_34204722的博客 222

STM32H750智能学生系统开发实战指导

本文还有配套的精品资源,点击获取 简介:基于STM32H750微控制器,本文介绍了智能学生系统的设计与实现,涵盖身份识别、传感器网络、无线通信、显示界面、电源管理、安全功能和机器学习集成等多个关键部分。文档详细解析了如何利用STM32H750的高性能处理能力和丰富接口,通过RTOS等软件技术,提高系统的响应速度和稳定性,实现一个全面的智能学生系统。 1. STM3...

weixin_28913879的博客 3416

国内STM32工程师的真实参考设计获取指南

STM32参考设计并非仅依赖官方文档,而是融合硬件电路、驱动代码与实战调试经验的技术综合体。其核心原理在于将芯片外设特性、PCB电气约束与嵌入式软件协同验证;技术价值体现在大幅缩短项目启动周期、规避量产级设计风险;典型应用场景包括物联网网关、电机控制、传感器采集等国产化开发任务;尤其在国产替代(如GD32)、长尾应用(如智能鱼缸、巴法云接入)和高频问题(如stm32 can通信突然连不上、stm32 adc切换通道残留)中,非官方渠道提供的已打板验证设计与实测参数更具工程落地性。本文聚焦国内真实可用的五大资

weixin_34186128的博客 369

STM32H750VB核心开发板全面开发资源包

STM32H750VB开发板是由STMicroelectronics推出的一款高性能开发平台,它搭载了功能强大的Arm Cortex-M7核心。该开发板专为需要高计算能力的嵌入式应用而设计,例如复杂的算法处理、图像和图形显示、以及实时数据处理等。本章节将介绍STM32H750VB的基本特性、功能规格以及与其他开发板的区别。实现自定义引导程序需要对STM32H7的启动模式和QSPI接口有深入的理解。

weixin_28850145的博客 941

STM32不是芯片型号,而是一套可裁剪的硬件API

STM32是基于ARM Cortex-M内核的32位微控制器家族统称,本质是一套标准化、可配置的嵌入式硬件开发范式。其核心价值在于统一的寄存器架构、外设互联机制与跨系列兼容的开发模型,使工程师能按需匹配资源——如超低功耗选L系列、实时控制选H7、无线集成选WBA。Cortex-M内核通过精简指令集与确定性实时能力,省去MMU、虚拟内存等复杂抽象,降低系统不确定性;而GPIO、ADC、DMA等外设并非孤立模块,而是通过硬件事件链协同工作的‘神经末梢’。这种‘同源异构’设计,支撑从点灯原型到工业量产的平滑演进。

weixin_34405354的博客 302

正点原子北极星开发板(STM32H750)适配RT-Thread 4.1.1的可直接编译工程

这个工程专为正点原子STM32H750北极星开发板设计,完整集成RT-Thread实时操作系统v4.1.1,开箱即用。源码包含RTOS核心功能:线程调度、内存管理(动态/静态)、软件定时器、信号量、互斥量、事件集、邮箱、消息队列等IPC机制,以及空闲线程和系统初始化流程。底层已适配Cortex-M7内核特性,支持FPU运算、TCM内存访问、指令/数据Cache配置与一致性维护。libcpu目录下提供中断控制器(NVIC)、上下文切换、寄存器保存恢复、Cache操作等关键移植代码。设备驱动层覆盖USART、G

ii567的博客 259

STM32H750的FDCAN配置

STM32H750的FDCAN配置,配置为传统CAN,波特率500K,文章见我的博客。电路末端需要增加120欧的终端电阻,原文路径https://blog.youkuaiyun.com/13011803189/article/details/123839036

STM32参考设计选型指南:量产级资源识别与验证方法

STM32参考设计并非简单代码与原理图的组合,而是融合电源完整性、时钟树设计、信号完整性、EMC防护及量产验证的系统性工程资产。其核心原理在于芯片外设电气特性与PCB物理实现的深度耦合,技术价值体现在缩短调试周期、规避批量返工风险、支撑工业/医疗/车规等高可靠性场景落地。当前工程师常混淆功能验证片段与可投产设计,导致USB枚举失败、CAN FD误码率超标、低温启动失效等典型问题。本文聚焦‘量产可用性’这一关键维度,结合VDDA滤波电容、USB PHY供电稳定性等高频实操热词,解析如何从设计完整性、参数自洽性

weixin_33910385的博客 476

STM32H750VBT6 CAN通信收发

CubeMAX配置引脚功能。 CAN通信设置为传统正常模式,波特率为1Mbps。 芯片: STM32H750VBT6 功能介绍: 1、按一次按键发送一则CAN报文 2、接收CAN报文并通过串口打印

STM32五大主流嵌入式操作系统选型指南

嵌入式操作系统(RTOS)是MCU从裸机迈向多任务、网络化与工业级可靠性的核心基础设施。其本质是通过任务调度、同步机制与内存管理,在资源受限的微控制器上构建确定性执行环境,从而支撑实时控制、低功耗通信、OTA升级等关键能力。技术价值在于降低软件复杂度、提升系统可维护性与长期稳定性。典型应用场景涵盖智能传感终端、工业PLC模块、边缘网关及便携医疗设备等。在STM32全系列平台(F0/F1/F4/H7/L4/U5)上,FreeRTOS与RT-Thread因ST官方集成度高、中文生态完善而成为工程落地首选;Zep

weixin_34198453的博客 253

WSL2+Docker+Ollama:解锁Windows本地GPU加速运行DeepSeek-R1模型

本文详细介绍了在Windows系统上,通过WSL2、Docker和Ollama的组合方案,实现本地GPU加速运行DeepSeek-R1模型的全过程。该方案解决了Windows环境下Ollama默认无法调用NVIDIA显卡的痛点,通过配置Docker的GPU支持,强制将计算任务分配给GPU,从而显著提升文本生成速度与效率,为开发者提供了一个便捷的本地AI测试环境。

weixin_28452161的博客 358

界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算

引言:目前工程上主要有螺栓,过盈,焊接和胶粘四种常用的连接方式,本文基于ANSYS Workbench环境,引入内聚力模型来实现对胶粘结构界面开裂失效的计算,文中的界面失效参数为随意给定,不是工程实际测试数据,仅起到演示作用!1.问题的描述如图所示给出了胶粘结构的三维模型,该胶粘结构由上下钢板组成,中间通过胶粘接到一起。(胶不需要建模,其影响主要通过内聚力模型实现)上下板的材料为结构钢,...

weixin_29473667的博客 1万+

嵌入式AI编程:STM32开发流程重构与本地化实践

嵌入式AI编程不是简单用大模型生成代码,而是面向资源受限、时序敏感、硬件强耦合的微控制器开发场景,构建可验证、可追溯的工程师-AI协作范式。其核心原理在于将AI定位为‘寄存器翻译官’与‘时序校验哨兵’,依托本地化轻量模型(如Qwen2.5-Coder)实现对STM32外设手册、HAL库约束、CubeMX配置逻辑的精准理解。技术价值体现在大幅压缩需求解构、架构设计、参数推演和调试根因分析周期,同时通过三重校验(寄存器级比对、时序仿真、资源冲突扫描)保障生成结果的物理可行性。典型应用场景覆盖电机控制、USB/C

weixin_34121282的博客 242

U盘文件变exe?3步教你用火绒+批处理脚本恢复隐藏文档(附注册表修复)

本文详细解析了U盘文件被病毒隐藏并伪装成exe文件的原理,并提供了三步解决方案:首先使用火绒安全软件进行全盘查杀清除病毒;其次通过批处理脚本批量恢复被隐藏的文件属性;最后修复被篡改的注册表设置,彻底解决文件无法显示的问题,帮助用户安全找回数据并加固系统防护。

weixin_28622215的博客 918

嵌入式AI编程:Claude Code可信配置与实战指南

嵌入式开发中的AI编程工具,本质是构建可验证、可追溯、可审计的代码生成闭环。其核心不在模型调用本身,而在于执行环境可控性、上下文精准注入与硬件级输出校验——这直接决定生成代码能否通过GCC编译、Cppcheck静态分析及QEMU模拟验证。Claude Code在STM32、FreeRTOS、HAL库等典型嵌入式场景中,需绕过默认Web配置,采用WSL2+Ollama本地模型+Node.js v18.19.0+工程感知提示词工程,才能真正替代重复性技术判断,如中断安全约束、寄存器位域操作、实时内存模型合规性等

weixin_29192141的博客 202

从零搭建无人机仿真环境:ROS 2与Gazebo Fortress实战指南

本文提供了一份详细的无人机仿真环境搭建实战指南,基于Ubuntu 22.04系统,整合ROS 2 Humble与Gazebo Fortress两大核心工具。通过分步讲解安装、配置及桥接过程,并引入PX4飞控与XTDrone2工具链,帮助开发者快速构建一个稳定、高效的无人机算法开发与测试平台,有效降低真机测试的成本与风险。

water的专栏 430

一位海外开发者的 OpenSPG KAG 实践分享

KAG 是一个以创建和操作知识图谱为核心的框架。知识图谱是数据之间相互关联的可视化和结构化表示,对于搜索引擎、推荐系统和机器学习等应用至关重要。KAG 的目标是提供一个强大的平台,使开发者能够:轻松构建图谱;通过增强算法丰富数据;集成人工智能,以进行更精确的推理。通过理解 KAG,可以明显看出,这个框架旨在帮助从初学者到专业开发者,在项目中创造更优的解决方案。它在简便性和集成方面的优势,使其成为下一代基于数据的应用程序的前景工具。

金融机器智能社区 3405

Qwen2.5-VL-7B-Instruct与Keil5集成开发:嵌入式AI实战教程

本文介绍了如何在星图GPU平台上自动化部署👁️Qwen2.5-VL-7B-Instruct镜像,赋能嵌入式AI应用。通过平台化部署,开发者可快速构建本地化多模态推理能力,典型应用于工业电路板元件识别——实现图像采集、端侧视觉语言理解与结构化诊断结果输出,全程无需云端依赖,保障数据安全与实时响应。

weixin_31459297的博客 285

数据挖掘实战-基于情感分析+网络语义分析+LDA主题分析对大唐不夜城用户评论进行文本分析

本研究基于去哪儿网和携程网的1888条大唐不夜城游客评论数据,运用Python进行文本分析。通过情感分析发现游客评价以积极为主(占比约70%),中性占20%,消极占10%。采用ROSTCM6软件进行社会网络语义分析,识别不同情绪下的高频词汇。使用LDA主题模型将评论划分为3个主题(夜景、表演、美食),并分析主题强度随时间变化趋势。实验包含数据采集、预处理、情感分析、语义网络分析和LDA建模等完整流程,为景区管理优化提供数据支持。源代码涵盖爬虫、数据处理和可视化分析的全套实现。

m0_64336780的博客 1万+

VS Code C/C++工程化配置:从编译调试到CI/CD实战

VS Code 不是轻量编辑器,而是基于LSP/DAP协议构建的C/C++工程级开发平台。其核心价值在于解耦工具链与IDE,实现跨平台、跨芯片、跨操作系统的统一开发体验。通过tasks.json调度构建、c_cpp_properties.json同步IntelliSense、launch.json映射GDB指令,可支撑嵌入式裸机、Linux服务、Windows应用等多场景开发。结合CMake、OpenOCD、RT-Thread等工业级工具链,能落地可复现、可版本化、可CI/CD自动化的工程基础设施。本文深入

weixin_34174422的博客 307

uniapp | vue2 | vue3 - 解决调用天地图功能服务时 http 网络请求报错 net::ERR ABORTED 503(Service Temporarily Unavailabl)

vue,uni-app,天地图,请求报错,503,请求失败,map.tianditu,天地图503,天地图请求503,接口503错误怎么办,vue天地图,uniAPP天地图,获取定位接口服务器报错503,获取当前定位,定位功能,IP属地定位,天地图服务器报错,如何解决报错,net::ERRABORTED503(ServiceTemporarilyUnavailabl),GET,POST,服务暂时不可用,react天地图,一直等待吗,报错怎么办,定位报错,轨迹,经纬度,天地图服务器503,在vue2

🏆 前端领域优质创作者 4438

模组 RG500Q入网问题分析

- [ ] 不同于公网,在5G专网环境中, 通常使用很多非标准的网络配置,如PLMN/APN等。因此,5G模组在专网环境下通常要做一些专门的配置才能正常入网,本文分析一例在专网环境, 5G终端无法入网问题的定位过程。 - [ ] 具体涉及到以下模组操作: 恢复出厂、SA only、锁BAND、配置MBN等

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 935
上一篇: STM32H750 480MHZ频率 RAM分配处理 KEIL工程
devicenet
博客等级 码龄17年 23粉丝 5原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值