单片机比特率计算公式

51单片机-波特率的计算&定时器初始值的计算 波特率的计算&定时器初始值的计算,掌握计算方法将会使你对串口通信的理解更进一步。 阅读详情

比特率2400:
晶振:11.0592
计算公式:

256- (11.0592* 1000*1000)/2400/32/12

在计算机中,串口通信是通过波特率(baudrate)来控制数据传输速度的。而波特率和定时器的预分频和重载值有关。在51单片机中,使用定时器1来控制串口通信波特率。

根据定时器1的工作方式,波特率可以通过以下公式计算得出:
波特率 = 定时器时钟频率 / (12 * 定时器1的重载值)

其中,定时器时钟频率可以通过晶振的频率来计算。在此题中,晶振频率为11.0592MHz。因此,
定时器时钟频率 = 晶振频率 / 12

将波特率代入公式中,可以解出定时器1的重载值。在此题中,波特率为2400。因此,

定时器1的重载值 = 定时器时钟频率 / (12 * 波特率)

代入相应的数值进行计算,可得到定时器1的重载值TH1约等于191。

#include <reg51.h> //头文件

sbit TX = P3^1; // 定义 TX 引脚为 P3.1

void init_uart(); // 初始化函数
void delay(int time); // 延时函数

void main()
{
    init_uart(); // 初始化串口

    while(1)
    {
        TX = 0; // 向串口发送一个字符
        SBUF = 'A'; 
        delay(10);
    }
}

// 初始化函数
void init_uart()
{
    TMOD &= 0x0F; // 清空模式位
    TMOD |= 0x20; // 设置 T1 模式为 8 位自动重装载定时器

    TH1 = 0xFD; // 波特率为 2400
    TL1 = 0xFD;

    PCON &= 0x7F; // SMOD=0,波特率倍增器关闭
    SCON = 0x50; // 串口工作在方式 1,允许接收

    TR1 = 1; // 启动定时器 T1
}

// 延时函数
void delay(int time)
{
    int i, j;
    for(i=0; i<time; i++)
        for(j=0; j<100; j++);
}

51单片机串口波特率计算 本文简单的讲解了51单片机的串口通信的波特率和它的计算方法 阅读详情

相关推荐

串口通信(UART)及串口中断,波特率计算(五)

串口的认知,UART的相关寄存器配置,波特率计算

weixin_73901182的博客 5294

51单片机波特率计算c语言,51单片机波特率怎么算?51单片机波特率计算公式

51单片机波特率怎么算?51单片机波特率计算公式方式0方式0的波特率固定为主振频率的1/12。方式2方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc方式1和方式3定时器T1作为波特率发生器,其公式如下:T1溢出率= T1计数率/产生溢出所需的...

weixin_29248611的博客 8320

51单片机串口波特率那些事

51单片机应用非常广泛,大家在开发时一般直接把现成的东西拿过来用,具体怎么回事大家可能认为不值得去花时间研究。但恰恰是因为这样的疏忽,反倒造成了我们对最简单的东西的一种陌生感。 最近在用51的时候,突然很疑惑,它的波特率产生的具体细节以及计算的原理是什么,只知道有个公式,但不知道这个公式中每个变量的意义以及用法,我想这样的话只能停留在会用的基础上,而并没有真正的理解它,下面就说说我对波特率的研究

Blank_CN的专栏 6489

个人对单片机串口波特率的理解

波特率就是串口每秒发送的位数,也可以看成发送的频率。在每一个周期上可以携带1 bit的数据,因此频率(波特率)越高,发送数据的效率就越高。 在单片机中用串口通信计算波特率的方法: 串行口工作方式为方式1:  (波特率=(2^SMOD)/32)定时器T1的溢出率  定时器T1的溢出率=单片机内部时钟频率/(256-X) X是定时器的初值  波特率=(2^SMOD)/32(单片机内部时钟频率/(...

qq_41714515的博客 7902

波特率、比特率与通信速度:嵌入式通信核心概念解析与实战计算

在嵌入式系统与单片机开发中,通信速度是评估系统性能的关键指标。其底层原理涉及波特率与比特率两个核心概念:波特率描述每秒传输的码元符号数,是信号变化的物理节拍;比特率则指每秒传输的有效二进制比特数,反映真实数据流速。理解二者关系对于串口、I2C等通信协议的配置与性能评估至关重要。在实际工程中,协议开销、时钟误差、缓冲区管理等因素会显著影响最终的有效数据吞吐率。本文通过分析串口UART和I2C等典型协议,结合波特率校准、吞吐量计算等实战案例,帮助开发者厘清概念混淆,掌握从理论比特率到实际通信速度的准确估算方法,

weixin_33860528的博客 518

单片机资料

1 51单片机内部有一个CPU用来运算、控制 有四个并行I/O口,分别是P0、P1、P2、P3 有ROM,用来存放程序 有RAM,用来存放中间结果 此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路 2 单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR) 51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):...

mo_QQ的博客 510

51快速复习

AT89s5224pc: 公司atel s:可下载 52:型号 24:最快运行频率 p:双列直插 c:commercial ttl +5v -5v rs332 +12v -12v 比特率:每秒传输二进制的位数,单位是位/秒 串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3 m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而...

weixin_44404722的博客 239

STC32G 单片机通用串行通信接口及其编程

本文详细介绍了STC32G系列单片机串行通信接口及其编程,并列出了库函数验证程序的源代码。

billliu66的博客 9170

单片机学习笔记 15. 串口通信(理论)

单片机学习笔记 15. 串口通信(理论)

u014087103的博客 1282

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据

Xilinx系列学习(一) BRAM的使用,并用PL读取BRAM数据一,Xilinx BRAM介绍二,BRAM对应的IP核调用和使用1,BRAM对应的IP核介绍2,BMG例化IP核的调用 一,Xilinx BRAM介绍 BRAM 就是Block Memory,是Zynq的PL端的存储RAM单元。可以利用BRAM,在PS和PL之间进行数据的交换。Zynq中还有一类存储器,称为分布式随机访问存储器(D...

weixin_43941525的博客 3万+

使用DevExpress22.X(Patch)控件库在VisualStudio2022使用C#进行Winform、WPF应用的开发,看这一篇就够了!

写在开头,Dev Express是个十分强大的控件库(下文简称Dev),但碍于其高昂的使用费用,“出于学习目的”,我们一般使用的都是Patch版本(在版权意识日趋加强的当下,不要提那两个字,现在加上那些字,百度都搜不出内容)。

平凡之路 2万+

【51单片机】波特率

一波特率概念   (BaudRate)  模拟线路信号的速率,也称调制速率,以波形每秒的振荡数来衡量。如果数据不压缩,波特率等于每秒钟传输的数据位数,如果数据进行了压缩,那么每秒钟传输的数据位数通常大于调制速率,使得交换使用波特和比特/秒偶尔会产生错误。     波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,其单位是波特(Baud)。

刘星燎 1万+

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

GPUDirect是NVIDIA开发的一项技术,旨在实现GPU与其他设备(如网络接口卡NIC和存储设备)之间的直接通信和数据传输,而无需CPU的参与。传统上,数据在GPU和另一个设备之间传输时,必须通过CPU,这导致潜在的性能瓶颈和延迟增加。GPUDirect技术则通过绕过CPU,直接访问和传输数据,显著提高系统性能。NVLink是NVIDIA开发的一种高速、高带宽的互连技术,用于连接多个GPU之间或GPU与其他设备(如CPU、内存等)之间的通信。

异构算力老群群(在读985计算机博士生)的技术博客 7771

51单片机——串口通信(重点)

串口通信(Serial Communication),是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议串口通信中通常使用的是异步串口通信,即没有时钟线,所以两个设备要通信,必须要保持一致的波特率。

2301_81699298的博客 2812

关于影响力最大化问题中贪心算法的一些理解

在影响力最大化问题中(Influence Maximization,以下简称IM),贪心算法是最早提出的一种解决方法,并且一直沿用至今。它基于IM问题所具有的单调性(Monotonicity)和子模性(Submodularity)使用一种Hill Climbing策略,不断使用Monte Carlo模拟来寻找在当前情况下的具有最大传播范围的节点,添加至种子集合,得到最终结果,算法伪代码如下所示: 这里算法1其实并没有使用MonteCarlo模拟,而只是使用了贪心的策略...

nianjuan1990的专栏 2852

ransac拟合2D圆(三点定圆 c++详细版)

RANSAC(Random Sample Consensus,随机采样一致性)算法是一种基于随机采样的迭代算法,主要用于从一组包含大量噪声和异常值(外点)的数据中估计数学模型的参数。

twnkie的博客 1047

串口通信中的波特率与比特率:从漂流瓶到数据流的本质解析

本文深入解析串口通信中波特率与比特率的本质区别与联系。通过生动的漂流瓶比喻,阐明波特率代表信号变化频率,而比特率关注实际信息传输效率。文章结合实战经验,详细讲解如何正确配置串口参数、计算有效数据速率,并避免常见通信错误,为嵌入式开发提供实用指南。

game4的博客 199

STM32入门教程:智能汽车控制

智能汽车是近年来快速发展的领域之一,它结合了嵌入式系统、传感器和通信技术,通过智能化的控制算法和决策系统实现自主导航、避障、环境感知等功能。在这篇教程中,我们将以 STM32 微控制器为核心,通过编写代码案例来介绍智能汽车的控制原理和实现方法。步骤三:决策与执行 最后,我们根据传感器数据做出相应的决策,并执行相应的动作。案例:智能汽车的避障功能 在这个案例中,我们将实现智能汽车的避障功能。感知系统负责感知汽车周围的环境,包括障碍物的距离、车辆的角度等信息。下面我们通过一个具体的案例来演示代码的编写。

2401_85258012的博客 927

关于51单片机串口通信的相关知识(寄存器)

51单片机串口通信

YYaomiao的博客 7732

Python对象的基本组成和内存示意图及引用的本质

在Python中,变量也称为:对象的引用(reference)。变量存储的就是对象的地址。变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。一个内存块,拥有特定的值,支持特定类型的相关操作。变量位于:栈内存(压栈出栈等细节,后续再介绍)。⚠️Python是动态类型语言。变量通过地址引用了“对象”。

Calor13的博客 557

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...

嵌入式菜鸟学习-51单片机-URAT串口通信

术语定义单位计算公式波特率每秒传输的码元(符号Symbol)的个数 ,即信道状态变化的频率。Baud(波特)波特率 = 符号数/秒比特率每秒传输的有效信息比特(bit)数量,即实际数据速率。bps(比特/秒)比特率 = 有效比特数/秒波特率(Baud Rate)是衡量数据传输速率的单位,它表示每秒传输的码元(符号)的个数。换句话说,波特率就是数据的“脉搏”,它决定了数据的传输速度。比特率想知道波特率和比特率比特(bit)

qq_26942353的博客 1389

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UART嵌入式通信协议(以AVR单片机为例)

UART通信协议概念通信基础并行通信串行通信单工通信双工通信半双工全双工波特率UART帧格式硬件连接控制器AVR单片机USART相关寄存器I/O数据寄存器 UDR控制和状态寄存器 UCSRA控制和状态寄存器UCSRB控制和状态寄存器UCSRC波特率寄存器UBRRL和UBRRHUSART的使用方法初始化发送函数接受函数主函数实例 概念 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机

Eric005的博客 2571

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

51单片机的串口通信(一)

串口通信好东西,但我没用过。 下面照着普中科技的ppt搬运下。        随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信方式 有并行通信和串行通信两种。 并行通信通常是将数据字节的各位用多条数据线同时进行传送 。 图一:并行通信 串行通信是将数据字节分成一位一位的形式在。 ...

大草的博客 7万+

51单片机 (十一)串口通信

随着多微机系统的广泛应用和技术的普及,计算机的通信功能愈来愈显得重要。计算机是指计算机与外部设备或计算机与计算机之间的信息交换。有和两种。并行通信通常是将数据字节的各位用多条数据线同时进行传送。串行通信是将数据字节分成一位一位的形式在。单工是指数据传输仅能沿一个方向,不能实现反向传输。半双工是指数据传输可以沿两个方向,但需要分时进行。全双工是指数据可以同时进行双向传输。奇偶校验、循环冗余校验比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。

DOF526570的博客 2547

单片机的串行口及应用

单片机的串行口及应用 通信方式: ​ 1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高 ​ 2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本 按照数据传送方向: 单工、半双工、全双工。一般情况下多数串行口工作在半双工,原因:用法简单。 波特率: 每秒传送二进制属马的位数,单位pbs (位/秒),衡量的是数据的传输速率,常用的波特率有2400bps、4800bps、9...

菜菜的博客 4522
上一篇: PROTEUS元器件库详细说明
下一篇: VScode环境兼容keil C251
程序猿Debug
博客等级 码龄12年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿Debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值