2440里面有个看门狗 定时器(Watch Dog Timer)

OpenHarmony鸿蒙开发 (5.0 ) 驱动实践-看门狗计时器(Watchdog timer) 系统正常工作的时候,每隔一段时间输出一个信号到喂狗端,给看门狗清零,这个操作就叫做喂狗。如果超过规定的时间不喂狗,看门狗定时超时,就会给出一个复位信号到系统,使系统复位。 阅读详情

原文来自于:http://blog.youkuaiyun.com/mr_raptor/article/details/6555704

我怕链接会失效,故转载此篇文章。。。


情境:

 我们编写的程序代码是先点亮led1,然后延时一会,再点亮led2,进入死循环。但在开发板上的实际效果是led1先亮,延时一会,led2再亮,然后一会之后,led1再次亮了。

 这和我们的设计的代码流程不吻合,这是因为2440里面有个看门狗定时器,开发板上电后,需要在一定时间内“喂狗”(设置相应的寄存器),否则就会重启开发板。

 之所以这样设计,是为了让芯片出现死机时,能够自己复位,重新运行。


看门狗定时器(Watchdog)

相信大家都看过中国移动前些时间做的一个广告,从城市到山村,到青藏高原,在哪儿都有中国移动的网络,到哪儿都能打电话,由此可以联想到中国移动在全国有无数个信号基站,很多基站建设在环境比较恶劣的地方,我们来思考一个问题?假如,有一天某个基站出了问题不能正常工作了,毫无疑问,移动的工作人员会带各种检测设备去进行修理,如果是出现非硬件故障(如用户电话服务突然巨增,造成繁忙死机或电磁干扰造成CPU运行出错等),导致基站服务器出现异常死机,工作人员只需要进行一个操作,重启一下即可。如果该基站安装在青藏高原上,这样一次上去,成本是很大的。退一步讲,这种情况虽然成本很高,但是还是可以修复的,如果这种情况出现在月球探测器身上,问题就更严重了。因此针对这种特殊情况的设备,我们期待有一种设备能够在机器出现非正常情况下进行自动重启来恢复工作状态,使用看门狗定时器就可以完美解决这个问题了。

看门狗WatchDog的名字形象的描述了它的工作原理,看门狗每隔一段时间(比如:3个小时)它就会饥饿,每次饥饿时都叫,如果不想让它叫,只要我们保证在3个小时内喂狗一次就行。因此我们要及时的对看门狗控制器执行喂狗操作。

看门狗定时器内部有一个递减计数器,当该计数器递减为0的时候,就会自动重启控制器(如下图所示),如果我们写有这样的程序,该程序在定时器计数器递减为0之前,将其递减计数器重新设置一下(喂狗),那么就不会产生重启操作。假如机器设备出现异常情况下如死机,CPU执行出错,程序跑飞等情况,CPU就会陷入非正常的执行流程,就不会去执行重置计数器的程序,当计数器递减为0时,会产生复位控制器信号,机器就会重新启动,恢复正常执行流程。这样的设计原理就解决了很多环境恶劣的情况下,对服务器进行重启的任务。上面的重置倒计数的操作通常叫做“喂狗”。

 

图2-42看门狗定时器

1 看门狗定时器的用途

(1)用于解决远程控制器在出现电磁干扰,噪声,系统错误等外界条件造成的系统死机等不正常运行的问题

(2)它不仅可以产生复位信号,还可以通过设置,产生定时的中断信号

看门狗定时器从单片机时代就开始广泛使用,是嵌入式产品中的一大特色,很明显上述用途如果我们都用不到,就没有必要打开看门狗的功能,在miniOS操作系统里我们不使用它来定时产生中断,也不用它来自动重启异常的开发板(因为出现异常的可能性几乎可以忽略),因为实现miniOs的第一步就是关闭看门狗,在开始裸板驱动之前,先来了解S3C2440 看门狗定时器。

          2  看门狗工作原理

 

图2-43 S3C2440看门狗定时器工作原理

名词解释:

PCLK(Peripherals Clock): APB(Advanced Peripherals  Bus)高级外围设备总线上外设的工作时钟频率,它主要为开发板上的外围低速设备提供工作时钟,如串口,I2C等,

8-bit Prescaler:8位分频器,由程序来控制对PCLK进行分频,它由WTCON寄存器来控制设置。

MUX:多路复合器,它支持多种时钟源,通过设置它来选择一种时钟频率,看门狗控制器里会产生四种时钟频率,分别是1/16,1/32,1/64,1/128的已分频时钟,可以通过WTCON寄存器第3,4位进行选择设置。

WTCNT:看门狗递减寄存器,一旦看门狗使能,WTCNT里的数据(由WTDAT寄存器在使能之前设置)就开始在输入时钟频率下递减。

Interrupt:中断信号,由WTCON寄存器的第2位控制是否产生中断信号。

Reset Signal Generator:Reset信号产生器,默认情况下当递减寄存器里的倒计数为0时,会产生通过Reset信号产生器产生Reset信号,让控制器重启,可以由WTCON寄存器的第0位进行设置。

当看门狗使能时,外围时钟PCLK为看门狗定时器的输入时钟,MINI2440在没有开启时钟时,采用外部晶振(又叫高频振荡器,它每秒钟产生固定频率时钟)提供的12MHz输入时钟频率,PCLK首先进入8位分频器Prescaler,其对PCLK进行分频,可以理解为对PCLK的除法运算,这样PCLK的时钟频率就变成PCLK/Prescaler value,其中分频器Prescaler的值可以在一定范围内自定义,然后经过分频的时钟经过除数因子选择器,这是在分频器的基础上再次对时钟信号进行降频,通过除数因子选择器,选择一个除数因子,然后经过MUX复合器,这时输入时钟变成PCLK/ Prescaler value/除数因子,得到我们想要的输入时钟, 每个时钟周期都会将看门狗定时计数器WTCNT里的值减1,当计数器WTCNT里的值变为0时开始执行超时操作,首先,判断看门狗控制寄存器里bit2 WTCON[2]设置情况,如果为1则产生中断信号,引起系统中断,如果为0不做任何操作,进入复位信号产生器,如果WTCON[0]位为1,则产生控制器复位信号,否则不做任何操作。每次超时操作之后,看门狗WTCON会自动加载看门狗数据寄存器WTDAT里的用户设置值,继续执行递减操作。

表2-5看门狗定时器控制寄存器 (WTCON)

寄存器名

地址

是否读写

描述

复位默认值

WTCON

0X53000000

R/W

看门狗定时器控制寄存器

0x8021

 

WTCON

位

描述

初始值

Prescaler value

[15:8]

8位分频器预设值,有效范围0~255(28 - 1)

0x80

Reserved

[7:6]

保留,正常情况下必须为00

00

Watchdog timer

[5]

看门狗定时器使能位

0 = 无效,1 = 有效

1

Clock select

[4:3]

选择除数因子来决定输入时钟

00 = 16,01 = 32

10 = 64,11 = 128

00

Interrupt generation

[2]

中断使能位

0 = 无效,1 = 有效

0

Reserved

[1]

保留,正常情况下该位必须为0

0

Reset enable/disable

[0]

复位使能位

1:看门狗定时器超时,发出CPU复位信号

0:看门狗定时器复位无效

1

表2-6看门狗定时器数据寄存器 (WTDAT)

寄存器名

地址

是否读写

描述

复位默认值

WTDAT

0x53000004

R/W

看门狗定时器数据寄存器

0x8000

 

WTDAT

位

描述

初始值

Count Reload value

[15:0]

该值在超时后,自动载入计数寄存器

0x8000

注:WTDAT寄存器用于指定计数寄存器的初始值,也就是它的超时时间,系统上电之后硬件自动的将0x8000的初始值载入到WTCNT里,在发生了第一次超时操作时,WTDAT的值才会载入到WTCNT寄存器。

表2-7看门狗定时器计数寄存器 (WTCNT)

寄存器名

地址

是否读写

描述

复位默认值

WTCNT

0x53000008

R/W

看门狗定时器计数寄存器

0x8000

 

WTCNT

位

描述

初始值

Count value

[15:0]

看门狗定时器的当前计数值

0x8000

通过对上面寄存器描述分析,可以得出以下结论:

l  通过设置WTCON[5]来设置看门狗定时器的使能

l  在开启看门狗定时器后,通过设置WTCON[15:8]和[4:3]位来设置看门狗控制器的工作时钟频率,具体看门狗的递减时间间隔可以通过下面的公式算出:

t_watchdog  = 1/( PCLK / (Prescaler value + 1) / Division_factor )

注: t_watchdog:看门狗控制器递减时间间隔(单位秒)

     PCLK:APB总线工作时钟(单位Hz)

     Prescaler value: 8位分频器预设值

     Division_factor:除数因子

l  通过设置WTCON[2] 和WTCON[0]位,来使能产生中断和复位信号

l  通过设置WTDAT来设置计数值

 

3   看门狗实验

MINI2440在没有初始化系统时钟时,整个开发板由一个12MHz的外部晶振提供频率,PCLK工作频率也是12MHz,WTCON[15:8]设置为74,除数因子选择16,通过上面公式可以计算出,看门狗控制器递减时间间隔0.1毫秒。将WTCNT里的值设置为0x2710(十进制10000),那么看门狗会每过一秒钟产生一次超时。

; 关闭看门狗实验

ldr r0, = 0x53000000                       ; WTCON寄存器地址加载到r0

mov r1, #0                                        ; r1 = 0

str r1, [r0]                                         ; 将r1里的值存到r0里地址里

通过分析前面的寄存器的设置位可知,只要设置WTCON[5]为0即可,上述代码里,直接将整个WTCON寄存器里的位设置为0。

 

开启看门狗实验:

WTCON               EQU          0x53000000        ; 看门狗控制寄存器

WTCNT               EQU          0x53000008        ; 看门狗计数寄存器

 

         AREA  WATCHDOG_ENABLE,CODE,READONLY

         ENTRY

           ; 设置看门狗控制寄存器

           ldr r0, =WTCON                                      ; 加载WTCON寄存器地址

         ; 0x4a21 = [15:8]=74, [5]=1, [0]=1

         ldr r1, =0x4a21                               ; 将0x4a21保存到r1里

         str r1, [r0]                                        ; 将r1里的值存入r0指向的地址

         ; 设置看门狗计数寄存器,该寄存器的值在上电后被加载, 1秒超时

         ldr r2, = WTCNT                            ; 加载WTCNT寄存器地址

           ldr r3, =0x2710                               ; 将0x2710保存到r1里

         str r3, [r2]                                                ; 将r3里的值存入r2指向的地址

 

           IMPORT led_on                             ; 引入led_on符号

         bl led_on                                         ; 调用led_on代码

 

loop

           B loop                                             ; 死循环

         END

程序开始定义两个常量地址,分别是WTCON,WTCNT的地址,ENRTY后面是程序的正文部分,首先通过ldr指令加载WTCON的地址到r0里,将0x4a21这个数加载到r1里,0x4a21是我们通过设置WTCON [15:8]=74 [7:6]=0,[5]=1,[4:1]=0, [0]=1得到的16进制数,将其值存入到r0地址里,这样WTCON里就是我们设置各位的值,然后同样道理再将0x2710存到WTCNT数据寄存器里,设置数据寄存器的值为0x2710。

为了看到看门狗的重启效果,我们加入了一个小程序,用来点亮led灯,将上述代码在ADS下编译完后,通过H-JTAG烧写到NORFLASH里可以看到每过1秒钟,开发板的led灯就闪一下。

知识扩展

开启了看门狗之后,控制器会定时的复位,为了防止不停的复位,就要进行“喂狗”操作,喂狗操作相对比较简单,只要在WTCNT里的计数减为0之前,将其值重置一个非0的数值即可,看下面的函数:feed_dog(该代码仅供读者参考,光盘源码中没有给出具体例子)

; 喂狗程序

feed_dog

           ldr r0, =WTCNT

           ldr r1, =0x2710

           str r1, [r0]

           mov pc, lr

喂狗程序对喂狗的时机必须要合适,否则在定时器还没来得及发生中断调用watchdog已经超时了,也将引起系统复位重启,通常系统里会开启另外一个时钟来为整个系统服务,它会定时的“告知”系统,在看门狗定时器超时之前,自动的调用喂狗程序。


Harmony鸿蒙南向驱动开发-Watchdog接口使用 看门狗(Watchdog),又称看门狗计时器(Watchdog timer),是一种硬件计时设备。 阅读详情

相关推荐

别再瞎调了!手把手教你用ADI IIO Oscilloscope配置AD936x的AGC(附Pluto SDR实测)

本文详细介绍了如何使用ADI IIO Oscilloscope工具配置AD936x系列射频捷变收发器的自动增益控制(AGC)功能,包括Slow/Fast Attack模式的参数设置与优化技巧。通过Pluto SDR硬件实测演示,帮助开发者快速掌握AGC配置方法,提升无线通信系统的接收性能。

weixin_30267785的博客 577

S3C2440看门狗

本文系本站原创,欢迎转载! 转载请注明出处: http://blog.youkuaiyun.com/mr_raptor/article/details/6555704 相信大家都看过中国移动前些时间做的一个广告,从城市到山村,到青藏高原,在哪儿都有中国移动的网络,到哪儿都能打电话,由此可以联想到中国移动在全国有无数个信号基站,很多基站建设在环境比较恶劣的地方,我们来思考一个问题?假如,有一天某个基

逐波与逆流 1418

北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead

北航论文模板:解决XeLaTeX中Font shape ‘TU/SimSun(1)/b/n’ undefined(font) using ‘TU/SimSun(1)/m/n’ instead 问题 问题描述: 在使用北航论文模板时,产生了warning:Font shape 'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' i...

qq_39560620的博客 1万+

WatchDog Timer看门狗

WDT是英语Watchdog Timer的缩写字母。 Watchdog Timer 中文名看门狗。是一个定时器电路,一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间输出一个信号到喂狗端,给 WDT 清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT 定时超过,就会给出一个复位信号到MCU,使MCU复位. 防止MCU死机. 看门狗的作用就是防

pursue的专栏 4970

CUDA编程00 - 配置CUDA开发环境

第一步:在一台装有Nvidia显卡和驱动的机器上,用nvidia-smi命令查看显卡所支持cuda版本。安装时按提示下一步即可,安装完成用 nvcc -V 命令检查是否成功。第二步: 到Nvidia官网下载CUDA Toolkit并安装,第三步:编写HelloWorld。

GPU全栈博主 1359

6.4 直流无刷电机(BLDC):测试与性能评估

本文系统阐述了直流无刷电机(BLDC)的测试与性能评估方法,涵盖参数测量、性能测试、测试平台设计及可靠性评估。详细介绍了绕组电阻、电感和反电动势的测量原理与修正方法,以及转矩-转速特性、效率分析和动态响应测试的技术要点。通过搭建高精度测功机系统,结合自动化数据处理,实现对电机性能的全面评估。最后讨论了温升、振动、EMC等特殊测试方法,为BLDC电机的设计验证和质量控制提供了完整的技术路径。

技术工作者 444

服务器无征兆异常重启

针对服务器无异常,无征兆,BMC无告警的情况下,服务器开机进入系统后,固定(10~30)分钟无限重启说明选项Os boot watchdog timer是否启用服务器watchdog功能(开启后,会通过Os boot watchdog timer timeout选项的配置,固定时间检查os系统中是否存在watchdog进程)enabled/disabledOs boot watchdog timer policy如果无法检测到watchdog进程,会对服务器执行的操作Power off / reset /d

abc2116146的博客 2759

一篇文章带你搞定数学建模里的主成分分析(05年水质问题示例应用讲解含代码)

文章目录一、题目分析二、原理公式三、MATLAB实现某一地区的主成分分析四、MATLAB 实现所有地区28个月的综合分析五、注意 一、题目分析 对长江近两年多的水质情况做出定量的综合评价,并分析各地区水质的污染状况 考虑到各指标之间可能存在一定的相关性,选用主成分分析法对长江流域主要城市水质检测报告进行分析,选取主成分,并把主成分得分按照方差贡献率加权求和,得到每个地区的污染综合评价指数,进而可以计算每个月长江流域的污染综合评价指数,对平均综合评价指数进行排序 二、原理公式 根据主成分分析的方法,分析长江沿

南淮北安的博客 2625

转载_ARM-Linux驱动--Watch Dog Timer(看门狗)驱动分析

硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11,04 内核版本:2.6.39 原创作品,转载请标明出处http://blog.youkuaiyun.com/yming0221/article/details/6595265 1、看门狗驱动的原理 下图是看门狗驱动的原理图 可以看出,PCLK是系统时钟,经过8位的预分频,然后再被

williamwanglei的专栏 1458

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器&配置版本-v5.2.3-beta+charts图表

详细介绍了在Ubuntu 23.04系统上部署Blockscout浏览器的步骤,以及过程中遇到的问题进行一一解决。

鄙人kunzhi96,感恩遇见! 2万+

WinCC 7.5 读取 SQL server2016 中的表格数据

环境 win10 SQL Server 2016 WinCC V7.5 SP2 1 安装SQL Server 2016 2 选择服务器名称 .\WINCC 3 建数据库

skr? 7140

ARM-Linux驱动--Watch Dog Timer(看门狗)驱动分析

硬件平台:FL2440 内核版本:2.6.28 主机平台:Ubuntu 11,04 内核版本:2.6.39 原创作品,转载请标明出处http://blog.youkuaiyun.com/yming0221/article/details/6595265 1、看门狗驱动的原理 下图是看门狗驱动的原理图 可以看出,PCLK是系统时钟,经过8位的预分频,然后再被分频(16、32、64、128)然后产生计数脉冲,进...

soboer 321

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux Watchdog timer看门狗机制简介

watchdog简介 watchdog 中文意思看门狗,是Linux系统中的一个特别重要的监测响应机制,负责监测系统运行的情况,一旦出现锁死,死机的情况,能够及时的重启机器,并收集crash dump。 又称watchdogtimer,是计算机可靠性(dependability)领域中一个极为简单同时非常有效的检测(detection)工具。其基本思想是针对被监视的目标设置一个计数器和一个阈值,watchdog会自己增加计数值,并等待被监视的目标周期性地重置计数值。一旦目标发生错误,没来得及重置计数..

weixin_45057618的博客 5868

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Arduino - 看门狗定时器(WDT:Watch Dog Timer)

看门狗定时器(WDT:Watch Dog Timer)实际上是一个计数器。 一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。 如果程序运行正常,过一段时间CPU应该发出指令让看门狗复位,令其重新开始倒计数。 如果看门狗计数减到0,就认为程序没有正常工作,就强制整个系统复位(单片机重启)。所以,当你开启看门狗后,需要在看门狗超时(减到0)前,对其进行 喂狗(复位)操作,否则看门狗会强制你的

光庆的学习笔记 2万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

看门狗定时器(Watchdog Timer)简介

在SoC(System on Chip)设计中,看门狗定时器(Watchdog Timer)是一种安全特性,用于监控系统或微控制器的运行状态,确保系统在出现软件故障或异常情况时能够自动恢复到已知的安全状态。看门狗定时器通常用于嵌入式系统和实时操作系统中,以防止系统因为程序卡死或死循环而变得无响应。

ygyglg的专栏 4588

看门狗定时器

【代码】看门狗定时器。

hpx12345678的博客 3575

dell 服务器面板显示屏,Dell服务器面板错误码详解

错误码比较多,请使用Ctrl+F输入故障码进行快速定位AMP0302The system board current is greater than the upper warning threshold.系统板 电流超出适宜范围解决办法审查系统电源策略。检查系统日志确认电源相关故障。审查系统配置更改。AMP0303System board current is outside of ran...

weixin_39615499的博客 6434

清除dell服务器面板告警信息,DELL面板告警日志

錯誤代碼消息信息AMP0302消息The system board current is greater than the upper warning threshold.(系統板 電流高於上限警告閾值。)135錯誤代碼 消息信息詳細信息系統板 電流超出適宜范圍。操作1.審查系統電源策略。2.檢查系統日志確認電源相關故障。3.審查系統配置更改。4.如果問題仍然存在,請參閱“獲得幫助”。AMP...

weixin_36344231的博客 8741

WatchDog Timer

应用        看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送

zhangyanquen的技术专栏 4670

嵌入式看门狗库:Mbed OS多实例WDT管理与超时回调实现

看门狗定时器(WDT)是嵌入式系统实现高可靠性的基础硬件机制,其核心原理是通过独立时钟源驱动异步复位电路,在软件异常时强制恢复系统。在Mbed OS平台中,原生Watchdog类功能简陋,缺乏超时回调、状态查询与多实例支持等关键能力,难以满足工业级产品对MTBF和故障域隔离的要求。WatchdogTimer库基于策略模式与状态机设计,在不替换底层驱动的前提下,封装了可配置超时、安全窗口回调、运行时状态监控及多实例共存等工程特性,显著提升系统可观测性与容错能力。典型应用于网关设备多协议子系统隔离、FreeRT

weixin_33506815的博客 515

s3c2440的看门狗

功能图以及介绍:   WTDAT 寄存器的数值不能够自动加载到WTCNT寄存器中,所以在watchdog启动之前,需要将初始值写到WTCNT寄存器中。   watchdog 是可以通过cpu核的DBGACK信号,来判断判断是否在调试模式,如果在调试模式watchdog timer 将不会运行。 介绍一下EmBedded ICE : EmbeddedICE-RT——Embed

zhoukangli的专栏 787

Dell 服务器错误代码

Dell 服务器错误代码 系统错误消息显示器中出现的系统消息,通知您系统可能出现的问题。这些消息会参考记录在系统事件日志 (SEL) 中的事件。有关 SEL 和配置系统管理设置的信息,请参阅系统管理软件文档。如果系统具有相关功能,则某些信息还会以缩略形式显示在系统 LCD 中。备注: 此处列出的 LCD 错误消息以简单格式显示。请参阅 Setup(设置)菜单选择显示消息使用的格式。备注: 如果收到的系统信息未在下面列出,请参阅信息出现时所运行的应用程序的说明文件或操作系统的说明文件,以了解对信息的说明和建议

蝌蚪成长记 1万+

什么是Watchdog?最全解释!直接贴代码!

一.什么是Watchdog? Watchdog,又称watchdog timer,是计算机可靠性(dependability)领域中一个极为简单同时非常有效的检测(detection)工具。其基本思想是针对被监视的目标设置一个计数器和一个阈值,watchdog会自己增加计数值,并等待被监视的目标周期性地重置计数值。一旦目标发生错误,没来得及重置计数值,watchdog会检测到计数值溢出,并采取恢复措施(通常情况下是重启)。总结一下就是计数——溢出——触发。 Watchdog的工作方式是事件触发的,它可以

HGJ515的博客 3万+
上一篇: 有关设置栈指针sp寄存器r13
下一篇: volatile关键字的作用:防止变量被编译器优化
mainn
博客等级 码龄10年 865粉丝 447原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值