STC单片机波特率初值计算以及通用串口配置程序

news2024/11/25 1:53:56

STC单片机波特率初值计算以及通用串口配置程序


  • 🔖这里以STC15手册上的数据展开。
  • 🔰串口模式一:可变波特率8位数据方式。以为最为常用的配置模式。
  • 🌿定时器1模式0:16位定时器计数器
  • 🌿定时器1模式2:8位定时器计数器

✨当然如果不需要深入了解计算,可以使用STC-ISP工具一键自动生成相对于的相关代码。但是看不到具体的参数时怎么计算得来的。

串口1工作模式

在这里插入图片描述

🛠串口 1 模式 1,模式 1 波特率计算公式:

在这里插入图片描述

  • 🔧定时器 12T 模式2:8bit自动重装载的初值配置

TH1 = TL1 = 256 - (MAIN_Fosc / 12 / 32 / BAUD); //STC12/STC15/STC8 Set auto-reload vaule
  • 🔧定时器 1T 模式2:8bit自动重装载的初值配置
TH1 = TL1 =256 -(MAIN_Fosc /  32 / BAUD); //STC12/STC15 1T Set auto-reload vaule

✨定时器运行速度选择1T还是12T绝对上面在计算波特率时,否则再除以12.

  • 🔧定时器 12T 模式0:16bit自动重装载的初值配置

	  TL1 =(unsigned int)(65536 -(MAIN_Fosc /12/ 4 / BAUD)); ///STC15 1T Set 16bit auto-reload vaule
	  TH1 =(unsigned int)((65536 - (MAIN_Fosc/12/4/BAUD))>>8);///STC15 1T Set 16bit auto-reload vaule
  • 🔧定时器 1T 模式0:16bit自动重装载的初值配置(STC12不在此计算范围内)
	  TL1 =(unsigned int)(65536 -(MAIN_Fosc / 4 / BAUD)); ///STC15 1T Set 16bit auto-reload vaule
	  TH1 =(unsigned int)((65536 - (MAIN_Fosc/4/BAUD))>>8);///STC15 1T Set 16bit auto-reload vaule

,🔖STC12单片机定时器1模式0为13位定时器/计数器.

  • 🌿以下只适用于STC15、STC8
    在这里插入图片描述
  • 🔰针对STC12
    在这里插入图片描述
  • 由于用其他工作方式设置波特率计算方法较复杂,一般应用较少。
  • 🔖针对STC12C5A60S2没有定时器2,但有独立的波特率发生器做串行通讯的波特率发生器,STC12尽量使用外部晶振源。
    在这里插入图片描述
    在这里插入图片描述

📝定时器1 模式2:8bit自动重装载,通用串口程序

  • 🌿可以适用于STC12/STC15/STC8

    • ⚡需要注意一点的是,对于STC15W408AS没有定时器1,不在此适用范围内。
  • ✨以下是配置的是定时器1,12T速度,使用内部11.0592MHz,波特率:9600

/************************************************
 * 文件描述     : Printf程序
 * 芯    片     : STC12、STC15、STC8
 * 时    钟       :11.0592MHz
 ************************************************/

#include <stdio.h>//用于printf打印
#include <STC12C5A60S2.H>

//#define MAIN_Fosc 48000000L        //定义主时钟
//#define MAIN_Fosc 44236800L        //定义主时钟
//#define MAIN_Fosc 40000000L        //定义主时钟
//#define MAIN_Fosc 36864000L        //定义主时钟
//#define MAIN_Fosc 35000000L        //定义主时钟
//#define MAIN_Fosc 33177600L        //定义主时钟
//#define MAIN_Fosc 30000000L        //定义主时钟
//#define MAIN_Fosc 27000000L        //定义主时钟
//#define MAIN_Fosc 24000000L        //定义主时钟
//#define MAIN_Fosc 22118400L        //定义主时钟
//#define MAIN_Fosc 20000000L        //定义主时钟
//#define MAIN_Fosc 18432000L        //定义主时钟
//#define MAIN_Fosc 12000000L        //定义主时钟
#define MAIN_Fosc 11059200L        //定义主时钟
//#define MAIN_Fosc 6000000L        //定义主时钟
//#define MAIN_Fosc 5529600L        //定义主时钟


sfr T2H         =   0xD6;   //0000,0000 T2高字节
sfr T2L         =   0xD7;   //0000,0000 T2低字节

#define BAUD 9600           //UART baudrate
bit busy;

//函数声明
void Uart1_Init(void);
void Uart1_SendChar(unsigned char dat);
void Delay_ms(unsigned int ms);

void main(void)
{
    Uart1_Init();
    Delay_ms(500);  

    while (1)
    {
        Delay_ms(1000);
        printf("Hello World!  \r\n");
    }
}

/***********************************************
函数名称:Uart1_Init
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
void Uart1_Init(void)
{
    SCON = 0x50;     //8位数据,可变波特率
	  AUXR &= 0xBF;		//定时器时钟12T模式
    AUXR &= 0xFE;       //串口1选择定时器1为波特率发生器
	
//	AUXR |= 0x40;		//定时器时钟1T模式
//	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	
    TMOD &= 0x0F;       //设置定时器模式
    TMOD |= 0x20;       //设置定时器1模式8bit自动重装载
    TH1 = TL1 = 256 - (MAIN_Fosc / 12 / 32 / BAUD); //STC12/STC15/STC8  12T Set auto-reload vaule
	
//	TH1 = TL1 =256 -(MAIN_Fosc /  32 / BAUD); //STC12/STC15 1T Set auto-reload vaule

	
	TR1 = 1;                //Timer1 start run
    ET1 = 0;            //禁止定时器中断

//    ES = 1;                 //Enable UART interrupt
//    EA = 1;                 //Open master interrupt switch
}
/***********************************************
*函数名称:Uart1_SendChar
*功    能:串口1发送单个字符函数
*入口参数:Udat:欲发送的数据
*返 回 值:无
*备    注:无
************************************************/
void Uart1_SendChar(unsigned char dat)
{
    SBUF = dat;
    while (!TI); //等待前一个数据发送完成
    TI = 0;//清除发送标志

}
/***********************************************
函数名称:printf重映射
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
char putchar(char dat)
{
    Uart1_SendChar(dat);
    return dat;
}

/*----------------------------
UART interrupt service routine
----------------------------*/
/*
void Uart_Isr() interrupt 4
{
    if (RI)
    {
        RI = 0;             //Clear receive interrupt flag
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }
}
*/
/***********************************************
函数名称:Delay_ms
功    能:STC 1T单片机1ms延时程序
入口参数:ms:延时的毫秒数

************************************************/
void Delay_ms(unsigned int ms)  //注:ms_max=65536
{
    unsigned int i;
    do
    {
//  i=MAIN_Fosc/96000L;       //STC89_12T
//  i=MAIN_Fosc/48000L;     //STC89_6T
        i = MAIN_Fosc / 14000;  //STC12
//  i=MAIN_Fosc/13000;     //STC15
//  i=MAIN_Fosc/10000;     //STC8
//  i=MAIN_Fosc/6030;     //STC32
        while (--i);
    }
    while (--ms);
}


    • ✨以下是配置的是定时器1,1T速度,使用内部11.0592MHz,波特率:9600
/************************************************
 * 文件描述     : Printf程序
 * 芯    片     : STC12C5A60S2
 * 时    钟       :11.0592MHz
 ************************************************/

#include <stdio.h>//用于printf打印
#include <STC12C5A60S2.H>

//#define MAIN_Fosc 48000000L        //定义主时钟
//#define MAIN_Fosc 44236800L        //定义主时钟
//#define MAIN_Fosc 40000000L        //定义主时钟
//#define MAIN_Fosc 36864000L        //定义主时钟
//#define MAIN_Fosc 35000000L        //定义主时钟
//#define MAIN_Fosc 33177600L        //定义主时钟
//#define MAIN_Fosc 30000000L        //定义主时钟
//#define MAIN_Fosc 27000000L        //定义主时钟
//#define MAIN_Fosc 24000000L        //定义主时钟
//#define MAIN_Fosc 22118400L        //定义主时钟
//#define MAIN_Fosc 20000000L        //定义主时钟
//#define MAIN_Fosc 18432000L        //定义主时钟
//#define MAIN_Fosc 12000000L        //定义主时钟
#define MAIN_Fosc 11059200L        //定义主时钟
//#define MAIN_Fosc 6000000L        //定义主时钟
//#define MAIN_Fosc 5529600L        //定义主时钟


sfr T2H         =   0xD6;   //0000,0000 T2高字节
sfr T2L         =   0xD7;   //0000,0000 T2低字节

#define BAUD 9600           //UART baudrate
bit busy;

//函数声明
void Uart1_Init(void);
void Uart1_SendChar(unsigned char dat);
void Delay_ms(unsigned int ms);

void main(void)
{
    Uart1_Init();
    Delay_ms(500);                 //等待上电稳定

//            printf("AT24C02 Read success! \r\n");
//                      Uart1_SendChar();

    while (1)
    {
        Delay_ms(1000);
        printf("Hello World!  \r\n");
    }
}

/***********************************************
函数名称:Uart1_Init
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
void Uart1_Init(void)
{
    SCON = 0x50;     //8位数据,可变波特率
//	  AUXR &= 0xBF;		//定时器时钟12T模式
//    AUXR &= 0xFE;       //串口1选择定时器1为波特率发生器
	
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	
    TMOD &= 0x0F;       //设置定时器模式
    TMOD |= 0x20;       //设置定时器1模式8bit自动重装载
//    TH1 = TL1 = 256 - (MAIN_Fosc / 12 / 32 / BAUD); //STC12/STC15/STC8  12T Set auto-reload vaule
	
	TH1 = TL1 =256 -(MAIN_Fosc /  32 / BAUD); //STC12/STC15 1T Set auto-reload vaule

	
		TR1 = 1;                //Timer1 start run
    ET1 = 0;            //禁止定时器中断

//    ES = 1;                 //Enable UART interrupt
//    EA = 1;                 //Open master interrupt switch
}
/***********************************************
*函数名称:Uart1_SendChar
*功    能:串口1发送单个字符函数
*入口参数:Udat:欲发送的数据
*返 回 值:无
*备    注:无
************************************************/
void Uart1_SendChar(unsigned char dat)
{
    SBUF = dat;
    while (!TI); //等待前一个数据发送完成
    TI = 0;//清除发送标志

}
/***********************************************
函数名称:printf重映射
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
char putchar(char dat)
{
    Uart1_SendChar(dat);
    return dat;
}

/*----------------------------
UART interrupt service routine
----------------------------*/
/*
void Uart_Isr() interrupt 4
{
    if (RI)
    {
        RI = 0;             //Clear receive interrupt flag
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }
}
*/
/***********************************************
函数名称:Delay_ms
功    能:STC 1T单片机1ms延时程序
入口参数:ms:延时的毫秒数

************************************************/
void Delay_ms(unsigned int ms)  //注:ms_max=65536
{
    unsigned int i;
    do
    {
//  i=MAIN_Fosc/96000L;       //STC89_12T
//  i=MAIN_Fosc/48000L;     //STC89_6T
        i = MAIN_Fosc / 14000;  //STC12
//  i=MAIN_Fosc/13000;     //STC15
//  i=MAIN_Fosc/10000;     //STC8
//  i=MAIN_Fosc/6030;     //STC32
        while (--i);
    }
    while (--ms);
}


定时器1 模式0 1T STC15、STC8通用串口程序(不适用于STC12)

/************************************************
 * 文件描述     : Printf程序
 * 芯    片     : STC12C5A60S2
 * 时    钟       :11.0592MHz
 ************************************************/

#include <stdio.h>//用于printf打印
#include <STC12C5A60S2.H>

//#define MAIN_Fosc 48000000L        //定义主时钟
//#define MAIN_Fosc 44236800L        //定义主时钟
//#define MAIN_Fosc 40000000L        //定义主时钟
//#define MAIN_Fosc 36864000L        //定义主时钟
//#define MAIN_Fosc 35000000L        //定义主时钟
//#define MAIN_Fosc 33177600L        //定义主时钟
//#define MAIN_Fosc 30000000L        //定义主时钟
//#define MAIN_Fosc 27000000L        //定义主时钟
//#define MAIN_Fosc 24000000L        //定义主时钟
//#define MAIN_Fosc 22118400L        //定义主时钟
//#define MAIN_Fosc 20000000L        //定义主时钟
//#define MAIN_Fosc 18432000L        //定义主时钟
//#define MAIN_Fosc 12000000L        //定义主时钟
#define MAIN_Fosc 11059200L        //定义主时钟
//#define MAIN_Fosc 6000000L        //定义主时钟
//#define MAIN_Fosc 5529600L        //定义主时钟


sfr T2H         =   0xD6;   //0000,0000 T2高字节
sfr T2L         =   0xD7;   //0000,0000 T2低字节

#define BAUD 115200           //UART baudrate

//函数声明
void Uart1_Init(void);
void Uart1_SendChar(unsigned char dat);
void Delay_ms(unsigned int ms);

void main(void)
{
    Uart1_Init();
    Delay_ms(500);                 //等待上电稳定

    while (1)
    {
        Delay_ms(1000);
        printf("Hello World!  \r\n");
    }
}

/***********************************************
函数名称:Uart1_Init
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
void Uart1_Init(void)
{
    SCON = 0x50;     //8位数据,可变波特率
//	  AUXR &= 0xBF;		//定时器时钟12T模式
//    AUXR &= 0xFE;       //串口1选择定时器1为波特率发生器
	
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	
//    TMOD &= 0x0F;       //设置定时器模式
//	  TMOD |= 0x20;       //设置定时器1模式2:8bit自动重装载
	

		TMOD &= 0x0F;		//设置定时器模式0:16位自动重载模式
	
//    TH1 = TL1 = 256 - (MAIN_Fosc / 12 / 32 / BAUD); //STC12/STC15/STC8  12T Set 8bit auto-reload vaule
	
//	TH1 = TL1 =256 -(MAIN_Fosc /  32 / BAUD); //STC12/STC15 1T Set 8bit auto-reload vaule
		
	  TL1 =(unsigned int)(65536 -(MAIN_Fosc / 4 / BAUD)); ///STC15 1T Set 16bit auto-reload vaule
	  TH1 =(unsigned int)((65536 - (MAIN_Fosc/4/BAUD))>>8);///STC15 1T Set 16bit auto-reload vaule

		TR1 = 1;                //Timer1 start run
    ET1 = 0;            //禁止定时器中断

//    ES = 1;                 //Enable UART interrupt
//    EA = 1;                 //Open master interrupt switch
}
/***********************************************
*函数名称:Uart1_SendChar
*功    能:串口1发送单个字符函数
*入口参数:Udat:欲发送的数据
*返 回 值:无
*备    注:无
************************************************/
void Uart1_SendChar(unsigned char dat)
{

    SBUF = dat;
    while (!TI); //等待前一个数据发送完成
    TI = 0;//清除发送标志

}
/***********************************************
函数名称:printf重映射
功    能:串口1初始化函数
入口参数:无
返 回 值:无
************************************************/
char putchar(char dat)
{
    Uart1_SendChar(dat);
    return dat;
}

/*----------------------------
UART interrupt service routine
----------------------------*/
/*
void Uart_Isr() interrupt 4
{
    if (RI)
    {
        RI = 0;             //Clear receive interrupt flag
    }
    if (TI)
    {
        TI = 0;             //Clear transmit interrupt flag
        busy = 0;           //Clear transmit busy flag
    }
}
*/
/***********************************************
函数名称:Delay_ms
功    能:STC 1T单片机1ms延时程序
入口参数:ms:延时的毫秒数

************************************************/
void Delay_ms(unsigned int ms)  //注:ms_max=65536
{
    unsigned int i;
    do
    {
//  i=MAIN_Fosc/96000L;       //STC89_12T
//  i=MAIN_Fosc/48000L;     //STC89_6T
        i = MAIN_Fosc / 14000;  //STC12
//  i=MAIN_Fosc/13000;     //STC15
//  i=MAIN_Fosc/10000;     //STC8
//  i=MAIN_Fosc/6030;     //STC32
        while (--i);
    }
    while (--ms);
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux高级存储功能

高级存储功能 1、Stratis管理分层存储 通过Stratis&#xff0c;便捷的使用精简配置&#xff08;thin provisioning&#xff09;&#xff0c;快照&#xff08;snapshots&#xff09;和基于池&#xff08;pool-based&#xff09;的管理和监控的等高级存储功能。 &#xff08;1&a…

加拿大亚马逊FBA海运收费标准有哪些

众所周知&#xff0c;加拿大亚马逊的海运物流费用一般有头程运费、尾端派送费和仓储费等其他费用。那么&#xff0c;加拿大亚马逊FBA海运收费标准有哪些呢?接下来一起来了解下加拿大亚马逊FBA海运收费标准和费用。加拿大亚马逊FBA海运收费标准有哪些? 加拿大亚马逊FBA海运收费…

《Java8实战》第6章 用流收集数据

collect 是一个归约操作&#xff0c;就像 reduce 一样可以接受各种做法作为参数&#xff0c;将流中的元素累积成一个汇总结果。具体的做法是通过定义新的Collector 接口来定义的&#xff0c;因此区分 Collection、Collector 和 collect 是很重要的。用 collect 和收集器能够做什…

PADS-微处理器、USB转UART芯片、MINI-USB PCB封装设计

目录 1 微处理器PCB封装设计 2 USB转UART芯片PCB封装设计 3 MINI-USB PCB封装设计 4 添加验证 详细步骤不再文字说明&#xff0c;直接截取关键步骤截图 1 微处理器PCB封装设计 查看芯片手册 器件高度 器件高度1.6 管脚中心点间距0.5&#xff0c;管脚焊盘长1.2、宽0.3&…

[ 云计算 | Azure ] Chapter 04 | 核心体系结构之数据中心、区域与区域对、可用区和地理区域

本章节主要内容进行讲解&#xff1a;Azure云计算的核心体系结构组件中的&#xff1a;Azure物理基础设施&#xff08;Physical infrastructure&#xff09;&#xff0c;区域&#xff08;Regions&#xff09;和区域对&#xff08;Region Pairs&#xff09;、地理数据中心&#xf…

一文解决ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题&#xff0c;RPS 和 RFS 网卡多队列性能调优实践[1]&#xff0c;对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路&#xff0c;如果你是想了解…

UE 简单插件制作

本文主要是提供几个写UE插件的实例&#xff0c;借此来了解在UE里使用C创建自定义插件的做法&#xff1a; 写一个使场景变暗的简单插件写一个自定义窗口&#xff0c;展示项目里所有的动画资产 写一个使场景变暗的简单插件 参考&#xff1a;Unreal Engine 5 - Writing Plugins …

统信UOS专业版系统安装教程 - 手动分区安装UOS系统

全文导读&#xff1a;本文主要介绍了安装UOS系统过程中使用手动分区安装方法&#xff0c;一般没有特殊要求建议使用全盘安装UOS系统。 准备环境 制作好统信UOS专业版启动U盘 一台CPU频率≥2GHz、内存≥4GB、硬盘≥64GB的电脑 安装步骤 一、制作UOS 系统启动盘 制作UOS 系…

自动驾驶TPM技术杂谈 ———— CCRT验收标准(评分标准)

文章目录介绍评价方法指标体系算分方法一级指标二级指标三级指标四级指标五级指标行车辅助能力得分说明跟车能力得分说明前车静止识别与响应得分说明前车低速识别与响应得分说明前车减速识别与响应得分说明前车切入识别与响应得分说明前车切出识别与响应得分说明跟随前车起停得…

数据结构小知识------时间与空间复杂度

本章思维导图&#xff1a; 一&#xff0c;时间复杂度 1.1时间复杂度的概念 &#x1f310;&#xff1a;什么是时间复杂度呢&#xff1f;时间复杂度其实就是一个程序运行时它的指令运行的次数。 在这里&#xff0c;程序默认每条指令的运行时间是一样的。所以时间复杂度就可以理解…

【云原生进阶之容器】第六章容器网络6.4.2--Flannel的安装与部署

1 flannel的安装与部署 见链接一篇文章带你了解Flannel - Flannel - 操作系统 - 深度开源 1.1 部署环境规划 1.2 安装部署 #tar -xf flannel-v0.13.0.tar.gz #mv /apps/svr/flannel-v0.13.0 #ln –svfn /apps/svr/flannel-v0.13.0 /apps/svr/flannel 1.2.1 调整Flannel配置…

设计模式(超详细)

设计模式 原则 什么是SOLID原则&#xff1f; S单一职责SRP Single-Responsibility Principle 一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合,高内聚在面向对象原则的引申,将职责定义为引起变化的原因,以提高内聚性减少引起变化的原因。 比如…

项目资源管理流程:五步专业指南

项目资源管理是描述大多数项目经理的一项关键职能的方式——收集完成工作所需的团队成员、设备和其他材料&#xff08;也称为资源&#xff09;。 以下是项目资源管理的步骤清单&#xff1a; 步骤1&#xff1a;资源规划 为了确定完成项目的资源需求&#xff0c;你首先需要了…

SpringCloud-Gateway实现网关

网关作为流量的入口&#xff0c;常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架&#xff0c;由WebFluxNettyReactor实现的响应式的API网关&#xff0c;它不能在传统的servlet容器工作&#xff0c;也不能构建war包。基于Filter的方式提…

个人开发者如何选择阿里云服务器配置CPU内存带宽?

阿里云服务器个人用怎么选择&#xff1f;云服务器吧建议选择ECS共享型s6&#xff0c;不限制CPU性能&#xff0c;选择1核2G或2核4G都可以&#xff0c;云服务器s6处理器采用2.5 GHz主频的Intel Xeon Platinum 8269CY&#xff08;Cascade Lake&#xff09;&#xff0c;睿频3.2 GHz…

【论文阅读--WSOL】Spatial-Aware Token for Weakly Supervised Object Localization

文章目录方法实验Limitation论文&#xff1a;https://arxiv.org/abs/2303.10438代码&#xff1a;https://github.com/wpy1999/SAT/blob/main/Model/SAT.py方法 这篇文章的方法应该属于FAM这一类。 额外添加的一个spatial token&#xff0c;从第10-12层开始&#xff0c;利用其得…

Vue3技术1之Vue3简介、创建Vue3工程、分析工程结构、安装开发者工具与初识setup

Vue3技术1Vue3简介发展提升创建Vue3工程使用vue-cli创建使用vite创建分析工程结构&#xff08;由vue-cli创建的&#xff09;main.jsvue.config.jsApp.vue安装开发者工具初识setupsetup的两种返回值返回一个对象App.vue返回一个函数App.vueVue2与Vue3混合使用App.vue总结Vue3简介…

【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)

系列文章目录 系列文章目录 前言 一、瑞萨MCU&#xff08;CPK_RA2E1是瑞萨RA系列开发板&#xff09;是什么&#xff1f; 首先引入是什么&#xff1f; 他的优势在哪&#xff1f; 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处&#xff1f; 瑞萨CPK_RA2E1如何开发&#xff…

集成定时器事件

一&#xff0c;定时器事件 1、概述 libevent提供了高性能定时器的功能&#xff0c;方便执行延迟回调逻辑。在添加事件监听的时候&#xff0c;可以不指定fd和监听的事件&#xff0c;指定超时的时间&#xff0c;实现定时器功能。定时器的实现主要依赖下面的数据结构&#xff0c;…

java 多线程基础 万字详解(通俗易懂)

目录 一、前言 二、定义 1.进程 : 2.线程 : 3.单线程与多线程 : 4.并发与并行 : 三、线程的创建 1.创建线程的两种基本方式 : 1 继承Thread类&#xff0c;并重写run方法 1.5 多线程的执行机制(重要) 2 实现Runnable接口&#xff0c;并重写run方法 2. 两种创建线程方式…