8051单片机实战分析(以STC89C52RC为例) | 12 - 串行口中断的使用

stc89c52 单片机模块 51单片机常用模块 阅读详情

在第一篇到第九篇博文中,我们认识到了一些基于IO口输入与输出的基础电子器件使用:
《8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED》
《8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁》
《8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯》
《8051单片机实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动》
《8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动》
《8051单片机实战分析(以STC89C52RC为例) | 06 - 动态数码管驱动》
《8051单片机实战分析(以STC89C52RC为例) | 07 - 独立按键驱动》
《8051单片机实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动》
《8051单片机实战分析(以STC89C52RC为例) | 09 - LED点阵显示数字》
但现在我们要开始回到8051单片机内部,通过实战来认识它们的工作原理,你会发现通过它们可以去开发一些更有意思的东西!

这篇博文带领大家认识一下STC89C52RC单片机定时器中断的使用。

如果你不了解什么是中断,建议你先看这篇:
《STC89C52RC单片机额外篇 | 01 - 认识中断、中断源以及中断优先级》

如果你不了解什么是串口通信,建议你先看这篇:
《STC89C52RC单片机额外篇 | 02 - 认识串行通信、波特率以及数据包》

1 中断系统结构

以下这张图是从中断引脚到中断入口所经过的通道:

从图中不难看出RX与TX引脚经过了SCON、IE、IP这些寄存器,因此我们在写程序时得把这些寄存器功能配置好,CPU才会按照我们的想法只执行!下面分别对这些寄存器进行介绍(稍微了解一下即可,忘记的时候再查)。

1.1 SCON寄存器

SCON(Serial Control Register),中文叫串行口控制寄存器,SCON寄存器是用于控制串行通信的方式选择、接收和发送,指示串口的状态。

首先介绍SCON寄存器位SM0/SM1,它们用于设置工作方式:

其余SCON寄存器位的用途:

SCON寄存器位作用
SM2多机通信控制位。多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
REN允许接收位。REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
TB8发送数据位8。在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
RB8接收数据位8。在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI发送中断标志位,它是可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
RI接收中断标志位,它是可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

要注意的是在串口中断处理时,TI,RI都需要软件清"0",硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。ES寄存器位位于接下来介绍的IE寄存器。

1.2 IE寄存器

IE(Interrupt Enable),中文叫中断允许寄存器,它的作用是控制所有中断源的开放或禁止,以及每个中断源是否被允许。

各寄存器位的作用如下:

IE寄存器位作用
EAEA = 0时,所有中断禁止(即不产生中断);EA = 1时,各中断的产生由个别的允许位决定
ES串行口RX/TX中断允许
ET1定时器T1中断允许
EX1外中断INT1中断允许
ET0定时器T0中断允许
EX0外部中断INT0中断允许

1.3 IP寄存器

IP(Interrupt Priority),中文叫中断优先级寄存器,它是用来设定各个中断源属于两级中断中的哪一级。

各寄存器位的作用如下:

IP寄存器位作用
PS串行口RX/TX中断优先
PT1定时器T1中断优先
PX1外中断INT1中断优先
PT0定时器T0中断优先
PX0外部中断INT0中断优先

除此之外,还有一个波特率有关的PCON寄存器,当然这里只用到它其中的一位。

1.4 PCON寄存器

PCON全称Power Control Register,即功率控制寄存器。

系统复位默认为SMOD=0。当SMOD=0时,串口方式1,2,3时,波特率正常;当SMOD=1时,串口方式1,2,3时,波特率加倍。

2 串行口结构

注意这里的SBUF寄存器只是逻辑上同名,但是它们物理上是分开的!另外,还需要用到TH1与TL1这种属于定时器T1的寄存器,后面会了解到它们的作用!

下面列出各个工作方式的数据传输:

① 工作方式0:

② 工作方式1:

③ 工作方式2与工作方式3:

3 波特率计算

如果你不了解什么是波特率,建议你先看这篇:
《STC89C52RC单片机额外篇 | 02 - 认识串行通信、波特率以及数据包》

下面列出基于各个工作方式的波特率计算公式,对于可变波特率的设置需要用到TH1寄存器:

当然,对于波特率,一般有几种是可供选择的,因为我们通常使用标称值:

这里我们好奇为什么晶振频率选择11.0592MHz就能减小计算误差,下面我们以9600波特率,分别代入11.0592MHz与12MHz计算一下:

我们设置定时器T1为工作模式2,SMOD 设为1,分别看看那所要求的TH1为何值。代入公式:

  • 11.0592MHz

            9600=(2÷32)×((11.0592M/12)/(256-TH1)) 
            =》TH1=250 
    
  • 12MHz

            9600=(2÷32)×((12M/12)/(256-TH1)) 
            =》TH1≈249.49 
    

4 代码

① 中断服务函数:

我们知道我们编写的C程序,函数的执行是从main主函数开始执行,现在有了中断,自然就产生一个中断服务函数:

从图中我们可以知道单片机在发生中断的时候,程序的执行过程会从主程序A跳到中断服务程序B,在执行完中断服务程序B后,会返回到之前主程序A被中断打断处继续执行程序。

那么我们如何指定中断服务程序?具体参考以下模板(对于函数名你可以随便写,当然最好贴近有意义的命名)。

外部中断0的中断服务函数:

void Int0()	interrupt 0
{
	... // 中断服务程序中要执行内容
}

定时器0的中断服务函数:

void Timer0()	interrupt 1
{
	... // 中断服务程序中要执行内容
}

外部中断1的中断服务函数:

void Int1()	interrupt 2
{
	... // 中断服务程序中要执行内容
}

定时器1的中断服务函数:

void Timer1()	interrupt 3
{
	... // 中断服务程序中要执行内容
}

串行口的中断服务函数:

void Serial()	interrupt 4
{
	... // 中断服务程序中要执行内容
}

② 下面我们写个程序,将波特率设置为4800,把发送的数据字符"1"显示到串口调试助手SSCOM:

#include "reg52.h"			 //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

/*******************************************************************************
* 函数名         :UartInit()
* 函数功能		 :设置串口
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/
void UartInit()
{
	SCON=0x50;			//设置为工作方式1
	TMOD=0x20;			//设置计数器工作方式2
	PCON=0x80;			//波特率加倍
	TH1=0xF3;			//计数器初始值设置,注意波特率是4800
	TL1=0xF3;
	ES=1;				//打开接收中断
	EA=1;				//打开总中断
	TR1=1;				//打开计数器
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	UartInit();  //	串口初始化
	while(1);		
}

/*******************************************************************************
 * 函数名         : Serial() interrupt 4
 * 函数功能		 : 串口通信中断函数
 * 输入           : 无
 * 输出          : 无
*******************************************************************************/
void Serial() interrupt 4
{
	u8 receiveData;

	receiveData=SBUF; //出去接收到的数据
	RI = 0;			  //清除接收中断标志位
	SBUF=receiveData; //将接收到的数据放入到发送寄存器
	while(!TI);		  //等待发送数据完成
	TI=0;			  //清除发送完成标志位
}

简要分析:

  • 代码中设置波特率为4800,根据前面的表格不是应该设置TH1=0xFA;吗?根据前面的介绍,我们不难发现此处用到晶振频率肯定不是11.0592MHz,明显是使用12MHz。
  • 注意这里把定时器T1设置为工作方式2——8 位自动重装模式,因此寄存器TH1与TL0的值是一样的。
  • 最后附上串口调试助手的操作:
8051单片机实战分析(以STC89C52RC为例) 10 - 外部中断的使用_双外部中断stc89c52rc单片机接线 你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!觉得这些内容对你有帮助,可以+V:Vip1104z获取!!!(备注:嵌入式)**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!! 阅读详情

相关推荐

STC89C52RC单片机额外篇 01 - 认识中断、中断源以及中断优先级_stc89c52有几个优先级计数器

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!更多资料点击此处获qu!!

2401_84009300的博客 1059

51单片机非阻塞串口中断收发数据

51单片机是指8051内核的8位单片机,因其内部结构相对简单,成本低廉,所以应用非常广泛!串口作为单片机最基本的通信接口,无论是开发调试,日常使用都是用得比较频繁的一个基本外设!但是很多教程包括官方提供的资料都是使用查询法发送数据!基本流程就是等待忙闲标志归0,忙闲标志置1,写SBUF寄存器,等待发送完成进入中断,忙闲标志清零。发送下一字节。 #include "reg51.h" #include "intrins.h" #define FOSC 11059200UL...

qq_45467219的博客 4696

中断系统c语言程序,51单片机中断系统程序实例 (STC89C52RC)

51单片机中断系统程序实例 (STC89C52RC)51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点:1. 要知道寄存器的英文全拼,比如IE = interrupt中断不知道全拼,要去猜,去查。这样...

weixin_31758621的博客 3829

STC51单片机串口发送程序

#include    #define uchar unsigned char    unsigned char rtemp,sflag; unsigned char code Buffer[] = "Welcome To The MCU World."; //所要发送的数据 unsigned char *p;   unsigned char TestBuff[3];

sidely的专栏 1万+

51单片机STC89C52RC——6.2 定时器

STC89C51RC/RD+系列单片机的定时器0和定时器1,与传统8051的定时器完全兼容,当在定时器1做波特率发生器时,定时器0可以当两个8位定时器用。STC89C51RC/RD+系列单片机内部设置的两个16位定时器/计数器TO和T1都具有计数方式和定时方式两种工作方式。对每个定时器/计数器(TO和T1),在特殊功能寄存器TMOD中都有一控制位―CT来选择TO或T1为定时器还是计数器。定时器/计数器的核心部件是一个加法(也有减法)的计数器,其本质是对脉冲进行计数。

oopxiajun博客专栏 2710

51单片机(STC89C52RC版本)学习笔记(更新中...)

B站江协科技《51单片机入门教程-2020版 程序全程纯手打 从零开始入门》课程学习笔记,包含LED,独立按键,数码管,LCD1602,矩阵键盘,定时器,串口通信,蜂鸣器等模块。

weixin_43364551的博客 2569

基于STC15系列单片机的串口中断例程

#include <STC15F2K60S2.H> #define FOSC 12000000 //晶振频率 #define BAUD 9600 //设置波特率 unsigned char ruart(); //串口接收一个字节数据 void tuart(unsigned char trdate); //串口发送一个字节数据.

宿管大爷 2902

51单片机嵌入式开发:7、 STC89C52RC 外部中断INT0和INT1 操作

STC89C52是一款常用的单片机型号,它基于8051内核,并具有一些扩展的功能和特性。中断源:STC89C52支持多种中断源,包括外部中断、定时器中断、串口中断和其他特定硬件中断。具体的中断源数量和类型取决于单片机的具体型号和配置。中断向量表:STC89C52使用中断向量表来管理中断服务例程。中断向量表是一组特定的内存地址,每个地址对应一个中断源的中断服务例程入口点。当中断触发时,单片机会根据中断源的标识符查找相应的中断向量表地址,并跳转到对应的中断服务例程。

sinat_30943509的博客 2000

51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释

功能1 stc15w204s sop16脚完美运行只需要一个文件功能2 串口发数据HEX功能3 串口发数据串,可以中文方便运算调试功能4 软件延时Delay1us 1纳秒功能5 软件延时Delay500ms 500毫秒功能6 uart_js[10] 串口中断接受放进数组功能7 UartInit(void) 串口通信配置功能8 uart_send_byte()// UART 发送一字节//uart_send_byte(0xba);发送一个字节函数功能9 uart_send_str(un...

qq_40286628的博客 4324

STC89C52RC单片机编程入门与实践

STC89C52RC单片机是基于8051内核的经典单片机,广泛应用于嵌入式系统的开发和教育领域。该单片机具有成本低、性能稳定、应用广泛的特点。本章节将介绍STC89C52RC的基本性能指标、架构组成以及它的典型应用场景。在C51中,函数的声明和定义遵循标准C的语法,但是要注意函数返回类型,因为某些函数可能需要返回单片机特定的数据类型,比如中断服务例程通常返回void类型。// 示例代码:函数声明和定义// 返回两个数的和// 返回两个数的乘积// 调用函数add计算3和5的和。

weixin_28988985的博客 1249

PLC编程标准之争:IEC61131与IEC61499核心区别与选型指南

在工业自动化领域,PLC编程长期依赖IEC61131标准,它定义了梯形图、结构化文本等语言,通过周期扫描机制保证确定性执行。然而,随着工业4.0和分布式控制场景的兴起,IEC61499以事件驱动模型打破传统范式,让功能块能跨设备协同,实现更灵活的柔性产线和模块化系统。理解两者在程序结构、数据交互、部署方式和实时性上的差异,是选型与工程落地的关键。本文从基础概念出发,剖析执行模型与架构演进,结合一线调试经验,帮助工程师在传统PLC与下一代标准之间做出理性决策。

weixin_27014595的博客 267

8051单片机实战分析(以STC89C52RC为例) | 10 - 外部中断的使用

在前面九篇博文中,我们认识到了一些基于IO口输入与输出的基础电子器件使用: 8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED 8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁 8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯 8051单片机实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动 8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动 8051单片机.

Systemcall名屋 2973

Halcon棋盘格畸变矫正

通常我们使用的相机都是带有一定的畸变的,只是畸变的大小不同。对于我们常见的测量项目来说,对测量精度的要求很高,通常从相机镜头上进行优化,但是即使镜头优化或者成本原因,造成图像仍有一定的畸变时,我们就可是使用棋盘格标定板,进行畸变矫正。

m0_51559565的博客 3395

你知道什么是STC89C52RC吗?

STC89C52RC是一种基于8051架构的单片机芯片,由中国的STC公司生产。它包含52KB的闪存程序存储器,1KB的RAM数据存储器,以及一系列的外设接口,例如串口、定时器、计数器等等,可广泛应用于工业自动化、仪器仪表、智能家居、电子产品等领域。STC89C52RC具有低功耗、高性能和高可靠性等优点,成本相对较低,因此在中国的嵌入式系统开发领域得到了广泛应用。

m0_61107092的博客 1万+

保姆级教程:在ROS Noetic下,手把手教你将自定义A*全局规划器打包成插件(附避坑指南)

本文提供了一份详细的ROS Noetic下自定义A*全局规划器插件开发指南,涵盖从环境准备、算法优化到插件配置与调试的全流程。通过实战案例和避坑技巧,帮助开发者高效实现机器人导航中的全局路径规划,特别适合需要优化ROS导航栈的开发者。

weixin_29168675的博客 282

一篇NS SAR ADC的学习记录

一篇NS SAR ADC的学习记录 内容包含: OverSampling Noise Shaping Dynamic Amplifier DAC with Redundancy 最近看了些有意思的SAR ADC结构,但是因为确实对模拟这个领域不太熟,导致了一系列的级联查找,最终达到了一个大概能懂的状态,为了理清思路,顺便别让看了这么些天的东西浪费了,还是计划写篇文章。 ps:由于不是一篇特别正紧的报告,参考文献就写的比较随便,且我还是个做数字的 A 13.5-ENOB, 107-μW Noise-Sha

weixin_45669724的博客 8708

8051单片机实战分析(以STC89C52RC为例) | 11 - 定时器中断的使用

在第一篇到第九篇博文中,我们认识到了一些基于IO口输入与输出的基础电子器件使用: 《8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED》 《8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁》 《8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯》 《8051单片机实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动》 《8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数.

Systemcall名屋 3289

潜在图神经网络学习笔记(Latent Graph Neural Networks for Human Skeleton-based Action Recognition)

在本文中,我们从一个新的角度来解决这个问题,通过将非结构化的骨架数据映射到潜在空间,如图2所示,这里称为潜在特征空间或嵌入空间,其中一组项嵌入在一个流形中[ 1 ],并且在潜在空间中彼此更相似的项被放置在彼此更接近的位置。潜在空间中的位置可以被认为是由一组潜在变量定义的,这些潜在变量来源于对象的相似性。将骨架数据嵌入到流形中,消除了远近邻居之间的冗余依赖关系,以解决加权问题。得到具有多尺度聚合特征的稀疏图矩阵结构,以更好地理解骨骼关节的直接加权信息。

qq_45631885的博客 488

stc89c52单片机

另外,T2EX的负跳变使T2CON中的EXF2置位,EXF2也像TF2一样能够产生中断(其向量与定时器2溢出中断地址相同,定时器2中断服务程序通过查询TF2和EXF2来确定引起中断的事件),捕获模式。如果定时器2中断被使能,则当TF2或EXF2置1时,定时器2递增计数,计数到0FFFFH后溢出并置位TF2,还将产生中断(如果中断被使能)。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。

weixin_62428951的博客 1万+

基于STM32L4XX、HAL库的IP101GRI以太网收发器(PHY)驱动程序设计

define IP101GRI_PHY_ADDRESS 0x01 // 根据硬件设计设置PHY地址。#define IP101GRI_PHYSTS 0x10 // PHY状态寄存器。#define IP101GRI_PHYINIR 0x12 // PHY中断寄存器。#define IP101GRI_PHYCR 0x14 // PHY控制寄存器。#define IP101GRI_PHYID2 0x03 // PHY标识符2。

zhusl6688的博客 717

基于Simulink和Control System Toolbox的线控转向(Steer-by-Wire)系统设计

通过上述步骤,我们成功设计并实现了基于 Simulink 和 Control System Toolbox 的线控转向(Steer-by-Wire)系统。该系统能够接收来自方向盘的角度指令,经过控制器处理后,驱动转向执行器(如电动机),实现对车辆前轮转向角度的精确控制。通过虚拟场景仿真、硬件在环测试和实车测试,验证了系统的响应速度、控制精度、车辆稳定性和实时性能,并通过参数优化进一步提升了系统的性能。

MHD0815的博客 549

51单片机(二)8051内核及STC89C52介绍

8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔公司于1981年制造。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,如Atmel、飞利浦、深联华等公司,相继开发了功能更多、更强大的兼容产品。 8051单芯片是同步式的顺序逻辑系统,整个系统的工作完全是依赖系统内部的时脉信号,用以来产生各种动作周期及同步信号。在8051单片机中已内建时钟产生器,在使用时只需接上晶振及电容,就可以让系统产生正确的时钟信号

weixin_51452951的博客 1万+

手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第一节-ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP互相通信

本节实现ATK-ESP8266 WIFI模块通过USB-TTL实现连接原子云服务器与手机APP通信。具体来说,本节使用串口CH340(USB-TTL)连接正点原子ATK-ESP8266 WIFI模块,通过AT命令实现连接原子云服务器与手机APP互相通信,实现硬件设备(WIFI模块)与云服务器和手机APP的互相通信。后面章节不用串口CH340(USB-TTL),通过编写单片机程序实现数据远程互相通信,并介绍手机APP的程序设计。单片机任意款即可,STM32F1系列,F4系列,H系列等都可以。本系列为(手把手实

嵌入式阿齐Archie 8417

入门51单片机(STC8952RC)定时器、有关中断原理简述、寄存器设置与程序示例(包括流水灯和计时器)

1.简述了51单片机定时器与有关中断的原理、寄存器设置;2.给出了定时器与有关中断c语言寄存器初始化示例;3.给出了两个较综合的流水灯控制和计时器实验代码

weixin_53456019的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STC89C52RC单片机额外篇 | 01 - 认识中断、中断源以及中断优先级

在前面九篇博文中,我们认识到了一些基于IO口输入与输出的基础电子器件使用: 8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED 8051单片机实战分析(以STC89C52RC为例) | 02 - LED延时约5s闪烁 8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯 8051单片机实战分析(以STC89C52RC为例) | 04 - 蜂鸣器驱动 8051单片机实战分析(以STC89C52RC为例) | 05 - 静态数码管驱动 8051单片机.

Systemcall名屋 4541

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: Rockchip | Rockusb工具
下一篇: Rockchip | Rockchip固件升级工具
嵌入式逍遥
嵌入式逍遥 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄9年 7万+粉丝 237原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

嵌入式逍遥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值