STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置,以及报警配置,支持双路报警。

1、STM32G474RE的RTC晶振引脚:

OSC32_IN为PC14,OSC32_OUT为PC15;

2、Vbat引脚

Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“外部电池”连接到Vbat引脚,RTC会使用VDD供电。因此Vbat也可以不接“外部电池”。1.55V<Vbat<3.6V

通过上图,连接到Vbat的外部电池,需要设计充电电路给它充电

3、RTC_OUT映射

RTC报警输出RTC_OUT1和RTC_OUT2
RTC_OUT1为PC13,RTC_OUT2为PB2;

RTC_CR寄存器的bit22:21(OSEL[1:0])
OSEL[1:0]=00b,输出不使能
OSEL[1:0]=01b,RTC报警器A输出使能
OSEL[1:0]=10b,RTC报警器B输出使能
OSEL[1:0]=11b,RTC唤醒输出使能

RTC_CR寄存器的bit31(OUT2EN)
OUT2EN=0,RTC_OUT2输出不使能;
OUT2EN=1,RTC_OUT2输出使能;

RTC_CR寄存器的bit23(COE)
COE=0校准输出不使能
COE=1校准输出使能

RTC_CR寄存器的bit19(COSEL)
COE=1且COSEL=0,CALIB输出为512Hz
COE=1且COSEL=1,CALIB输出为1Hz

 4、测试程序

RTC.c程序

RTC_HandleTypeDef hrtc;void RTC_Init(void);
void RTC_Display(void);void TEST_Hal_RTC_Set_Alarm_A(void);
void TEST_Hal_RTC_Set_Alarm_B(void);void RTC_Init(void)
{RCC_OscInitTypeDef        RCC_OscInitStruct;  //配置LSE/LSI时钟RCC_PeriphCLKInitTypeDef  PeriphClkInitStruct;//用来为RTC选择时钟源__HAL_RCC_PWR_CLK_ENABLE();//Enable write accessHAL_PWR_EnableBkUpAccess();//Enable the power clock#ifdef RTC_CLOCK_SOURCE_LSERCC_OscInitStruct.OscillatorType =  RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_LSE;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;RCC_OscInitStruct.LSEState = RCC_LSE_ON;RCC_OscInitStruct.LSIState = RCC_LSI_OFF;HAL_RCC_OscConfig(&RCC_OscInitStruct);//配置LSE时钟,关闭LSI时钟PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);//选择LSE时钟为RTC时钟源#elif defined (RTC_CLOCK_SOURCE_LSI)RCC_OscInitStruct.OscillatorType =  RCC_OSCILLATORTYPE_LSI;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;RCC_OscInitStruct.LSIState = RCC_LSI_ON;HAL_RCC_OscConfig(&RCC_OscInitStruct);//配置LSI时钟PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct);//选择LSI时钟为RTC时钟源
#endif /*RTC_CLOCK_SOURCE_LSE*/__HAL_RCC_RTCAPB_CLK_ENABLE();//使能RTC APB外部设备时钟,Enable RTC peripheral Clocks__HAL_RCC_RTC_ENABLE();//使能RTC时钟,Enable RTC Clockhrtc.Instance = RTC;                       //选择RTChrtc.Init.HourFormat = RTC_HOURFORMAT_24;  //指定RTC小时的格式hrtc.Init.AsynchPrediv = RTC_ASYNCH_PREDIV;//指定RTC异步预分法器的值。hrtc.Init.SynchPrediv = RTC_SYNCH_PREDIV;  //指定RTC同步预分配器的值。hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;HAL_RTC_Init(&hrtc);if (HAL_RTCEx_BKUPRead(&hrtc, RTC_BKP_DR0) != 0x32F2){//读TAMP_BKPxR寄存器,因为RTC_BKP_DR0=0,所以是读TAMP_BKP0R寄存器Test_RTC_Set_Date_And_Time();//设置时间为24年2月29日星期四23:59:50:00HAL_RTCEx_BKUPWrite(&hrtc, RTC_BKP_DR0, 0x32F2);//写TAMP_BKPxR寄存器,因为RTC_BKP_DR0=0,所以是写TAMP_BKPxR寄存器//将0x32F2写入TAMP_BKP0R寄存器//Writes a data in a RTC Backup data Register0}TEST_Hal_RTC_Set_Alarm_A();TEST_Hal_RTC_Set_Alarm_B();
}//函数功能:显示“年月日和星期几”以及“时分秒”
void RTC_Display(void)
{RTC_DateTypeDef sdatestructureget;//用来保存“年月日和星期几”RTC_TimeTypeDef stimestructureget;//用来保存“时分秒”printf("RTC_IT_SEC\r\n");HAL_RTC_GetTime(NULL, &stimestructureget, RTC_FORMAT_BIN);//读取"RTC时间"//读RTC_TR寄存器bit21:20(HT[1:0]),HT[1:0]表示小时的十位数值//读RTC_TR寄存器bit19:16(HU[3:0]),HU[3:0]表示小时的个位数值//读RTC_TR寄存器bit14:12(MNT[2:0]),MNT[2:0]表示分钟的十位数值//读RTC_TR寄存器bit11:8(MNU[3:0]),MNU[3:0]表示分钟的个位数值//读RTC_TR寄存器bit6:4(ST[2:0]),ST[2:0]表示秒的十位数值//读RTC_TR寄存器bit3:0(SU[3:0]),SU[3:0]表示秒的个位数值//HAL库耍牛氓,我也耍牛氓HAL_RTC_GetDate(NULL, &sdatestructureget, RTC_FORMAT_BIN);//读取"RTC日期"//读RTC_DR寄存器bit23:20(YT[3:0]),YT[3:0]表示年的十位数值//读RTC_DR寄存器bit19:16(YU[3:0]),YU[3:0]表示年的个位数值//读RTC_DR寄存器bit15:13(WDU[2:0]),WDU[2:0]=001b表示星期1;WDU[2:0]=010b表示星期2......WDU[2:0]=111b表示星期日//读RTC_DR寄存器bit12(MT),MT表示月的十位数值//读RTC_DR寄存器bit11:8(MU[3:0]),MU[3:0]表示月的个位数值//读RTC_DR寄存器bit5:4(DT[1:0]),DT[1:0]表示日的十位数值//读RTC_DR寄存器bit3:0(DU[3:0]),DU[3:0]表示日的个位数值//HAL库耍牛氓,我也耍牛氓printf("%02d-%02d-%02d  day:%02d  ", sdatestructureget.Year,sdatestructureget.Month,sdatestructureget.Date,sdatestructureget.WeekDay);printf("%02d:%02d:%02d\r\n", stimestructureget.Hours, stimestructureget.Minutes, stimestructureget.Seconds);//显示时间格式为 : YY-MM-DD hh:mm:ss
}//设置时间为24年2月29日星期四23:59:50:00
void Test_RTC_Set_Date_And_Time(void)
{RTC_TimeTypeDef sTime = {0};  //用来设置时间“时分秒”RTC_DateTypeDef sDate = {0};  //用来设置日期“年月日和星期几”sTime.Hours = 0x23;      //这里是BCD码,0x23表示23小时sTime.Minutes = 0x59;    //这里是BCD码,0x59表示59分钟sTime.Seconds = 0x50;    //这里是BCD码,0x50表示50秒种sTime.SubSeconds = 0x00;//RTC_SSR寄存器bit15:0(SS[15:0])是只读的,这里设置为0x00没有意义sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;//RTC_CR寄存器bit16(ADD1H),ADD1H=0,当前时间不增加1小时//若使用“夏令时”,ADD1H=1,表示当前时间增加1小时sTime.StoreOperation = RTC_STOREOPERATION_RESET;//RTC_CR寄存器bit18(BKP),BKP=0,不使用“夏令时”//现在已经废除了“夏令时”,不要去了解。HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD);//设置“时分秒”sDate.WeekDay = RTC_WEEKDAY_THURSDAY;//这里是BCD码,RTC_WEEKDAY_THURSDAY表示0x04,星期四sDate.Date = 0x29; //这里是BCD码,0x29表示29日sDate.Month = RTC_MONTH_FEBRUARY;//这里是BCD码,RTC_MONTH_FEBRUARY表示0x02,2月sDate.Year = 0x24; //这里是BCD码,0x24表示24年HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD);//设置“年月日”
}//使用HAL设置报警,有点呆板
void TEST_Hal_RTC_Set_Alarm_A(void)
{RTC_AlarmTypeDef sAlarm = {0};//用来设置报警时间HAL_RTC_DeactivateAlarm(&hrtc,RTC_ALARM_A);//选择RTC_ALARM_A时,表示停用AlarmA报警://不使能“Alarm A报警”和“Alarm A报警中断”,同时不选择“RTC报警事件”作为触发源//必须先停用AlarmA报警,才能配置AlarmA报警时间sAlarm.Alarm = RTC_ALARM_A; //指定配置RTC报警A寄存器(RTC_ALRMAR)sAlarm.AlarmTime.TimeFormat = RTC_HOURFORMAT_24;  //指定RTC报警小时的格式sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;//指定RTC警报是按照日期报警sAlarm.AlarmDateWeekDay = 0x01;//每月1号报警//  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;//指定RTC警报是按照星期报警
//  sAlarm.AlarmDateWeekDay = RTC_WEEKDAY_FRIDAY;//每个星期五报警sAlarm.AlarmTime.Hours = 0x00;    //这里是BCD码,0x00表示00小时sAlarm.AlarmTime.Minutes = 0x00;  //这里是BCD码,0x00表示00分钟sAlarm.AlarmTime.Seconds = 0x20;  //这里是BCD码,0x20表示20秒种sAlarm.AlarmTime.SubSeconds = 0x30;//RTC_ALRMASSR寄存器bit27:24(MASKSS[3:0]),bit14:0(SS[14:0])//当选择“RTC_ALARM_A”时,时间写入RTC_ALRMAR//当选择“RTC_ALARM_B”时,时间写入RTC_ALRMBR//  sAlarm.AlarmMask = RTC_ALARMMASK_HOURS|RTC_ALARMMASK_MINUTES|RTC_ALARMMASK_DATEWEEKDAY;//RTC_ALARMMASK_HOURS|RTC_ALARMMASK_MINUTES|RTC_ALARMMASK_DATEWEEKDAY不关注日期小时和分钟,则每分钟报警一次sAlarm.AlarmMask = RTC_ALARMMASK_ALL;//RTC_ALARMMASK_ALL不关注日期,小时,分钟和秒,则每秒种报警一次sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;//需要匹配“子秒”HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD);HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 5, 0);//设置NVIC中断分组4:4位抢占优先级,0位响应优先级//选择中断优先级组4,即抢占优先级为4位,取值为0~15,响应优先级组为0位,取值为0HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
}//使用HAL设置报警,有点呆板
void TEST_Hal_RTC_Set_Alarm_B(void)
{RTC_AlarmTypeDef sAlarm = {0};//用来设置报警时间HAL_RTC_DeactivateAlarm(&hrtc,RTC_ALARM_B);//选择RTC_ALARM_A时,表示停用AlarmB报警://不使能“Alarm B报警”和“Alarm B报警中断”,同时不选择“RTC报警事件”作为触发源//必须先停用AlarmB报警,才能配置AlarmB报警时间sAlarm.Alarm = RTC_ALARM_B; //指定配置RTC报警B寄存器(RTC_ALRMBR)sAlarm.AlarmTime.TimeFormat = RTC_HOURFORMAT_24;  //指定RTC报警小时的格式sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;//指定RTC警报是按照日期报警sAlarm.AlarmDateWeekDay = 0x01;//每月1号报警//  sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY;//指定RTC警报是按照星期报警
//  sAlarm.AlarmDateWeekDay = RTC_WEEKDAY_FRIDAY;//每个星期五报警sAlarm.AlarmTime.Hours = 0x00;    //这里是BCD码,0x00表示00小时sAlarm.AlarmTime.Minutes = 0x00;  //这里是BCD码,0x00表示00分钟sAlarm.AlarmTime.Seconds = 0x20;  //这里是BCD码,0x20表示20秒种sAlarm.AlarmTime.SubSeconds = 0x30;//RTC_ALRMASSR寄存器bit27:24(MASKSS[3:0]),bit14:0(SS[14:0])//当选择“RTC_ALARM_A”时,时间写入RTC_ALRMAR//当选择“RTC_ALARM_B”时,时间写入RTC_ALRMBR//  sAlarm.AlarmMask = RTC_ALARMMASK_HOURS|RTC_ALARMMASK_MINUTES|RTC_ALARMMASK_DATEWEEKDAY;//RTC_ALARMMASK_HOURS|RTC_ALARMMASK_MINUTES|RTC_ALARMMASK_DATEWEEKDAY不关注日期小时和分钟,则每分钟报警一次sAlarm.AlarmMask = RTC_ALARMMASK_ALL;//RTC_ALARMMASK_ALL不关注日期,小时,分钟和秒,则每秒种报警一次sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;//需要匹配“子秒”HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD);HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 5, 0);//设置NVIC中断分组4:4位抢占优先级,0位响应优先级//选择中断优先级组4,即抢占优先级为4位,取值为0~15,响应优先级组为0位,取值为0HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
}void RTC_Alarm_IRQHandler(void)
{
//  HAL_RTC_AlarmIRQHandler(&hrtc);uint32_t tmp = READ_REG(RTC->MISR);//Get interrupt statusif ((tmp & RTC_MISR_ALRAMF) != 0U)//RTC ALARM A报警{//当选择“RTC_ALARM_A”时,时间与RTC_ALRMAR相同时报警WRITE_REG(RTC->SCR, RTC_SCR_CALRAF);//Clear the AlarmA interrupt pending bit
//    __HAL_RTC_ALARM_EXTI_CLEAR_IT();
//		LED1_On();//报警时,LED亮LED1_Toggle();}if ((tmp & RTC_MISR_ALRBMF) != 0U)//RTC ALARM A报警{//当选择“RTC_ALARM_B”时,时间与RTC_ALRMBR相同时报警WRITE_REG(RTC->SCR, RTC_SCR_CALRBF);//Clear the AlarmB interrupt pending bit
//    __HAL_RTC_ALARM_EXTI_CLEAR_IT();LED2_Toggle();}__HAL_RTC_ALARM_EXTI_CLEAR_IT();
}

RTC.h程序

#ifndef __RTC_H__
#define __RTC_H__#include "stm32g4xx_hal.h"
//使能int8_t,int16_t,int32_t,int64_t
//使能uint8_t,uint16_t,uint32_t,uint64_t//#define RTC_CLOCK_SOURCE_LSI    //RTC使用CPU内部LSI作为时钟源
#define RTC_CLOCK_SOURCE_LSE#ifdef RTC_CLOCK_SOURCE_LSI
#define RTC_ASYNCH_PREDIV    0x7C
#define RTC_SYNCH_PREDIV     0xF9
#endif#ifdef RTC_CLOCK_SOURCE_LSE
#define RTC_ASYNCH_PREDIV  0x7F
#define RTC_SYNCH_PREDIV   0xFF
#endifextern void RTC_Init(void);
extern void RTC_Display(void);#endif /*__ RTC_H__ */

5、测试结果

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis简介

目录 前言 什么是Mybatis? 为什么要使用MyBatis? 学会使用MyBatis官网 前言 本篇博客&#xff0c;通过介绍Mybatis的含义和使用原因&#xff0c;简单的介绍Mybatis&#xff01;&#xff01;&#xff01; 我认为最重要的一点就是&#xff1a;学会看官网 什么是Mybatis?…

NET8 MAUIBlazor发布用于windows应用

1.打开 PowerShell 终端 , 命令行进入工程目录,以我的例子工程为例 DOS命令:cd 项目名 2.复制窗口里面的 Thumbprint 下的指纹码, 例如我这个是E18EF79CF31104139F16BD2089F4AB1898D381C2 3.配置项目生成设置, 双击项目名称或者直接编辑 ltyj.C2.Cilent.csproj 文件 添加下面…

Stable Diffusion4.9一键安装教程SD(AI绘画软件)

**无套路&#xff01;**文末提供下载方式 Stable Diffusion 是一款革命性的 AI 绘画生成工具&#xff0c;它通过潜在空间扩散模型&#xff0c;将图像生成过程转化为一个逐步去噪的“扩散”过程。 与传统的高维图像空间操作不同&#xff0c;Stable Diffusion 首先将图像压缩到…

盘古信息:做新能源行业数字化转型升级的领航员

随着全球能源转型的加速与可持续发展目标的明确&#xff0c;新能源行业正步入一个前所未有的广阔发展空间。然而&#xff0c;在迅猛发展的浪潮中&#xff0c;新能源行业也面临着诸多挑战&#xff0c;为应对当前市场环境&#xff0c;新能源行业正积极寻求数字化转型的突破路径&a…

NX—UI界面生成的文件在VS上的设置

UI界面保存生成的三个文件 打开VS创建项目&#xff0c;删除自动生成的cpp文件&#xff0c;将生成的hpp和cpp文件拷贝到项目的目录下&#xff0c;并且在VS项目中添加现有项目。 修改VS的输出路径&#xff0c;项目右键选择属性&#xff0c;链接器中的常规&#xff0c;文件路径D:…

Harmony OS DevEco Studio 如何导入第三方库(以lottie为例)?-- HarmonyOS自学2

在做鸿蒙开发时&#xff0c;离不开第三方库的引入 一.有哪些支持的Harmony OS的 第三方库&#xff1f; 第三方库下载地址&#xff1a; 1 tpc_resource: 三方组件资源汇总 2 OpenHarmony三方库中心仓 二. 如何加入到DevEco Studio工程 以 lottie为例 OpenHarmony-TPC/lot…

通过XMLHttpRequest和window.open在浏览器中打开文件流pdf以及下载pdf

1、浏览器预览pdf&#xff1a; 首先通过接口获取文件流数据 下发是源码 var xhr new XMLHttpRequest(); xhr.open("GET", http://www.baidut.com/downloadFile); xhr.responseType "blob"; xhr.onload function(){ if(this.status 200){ var blob…

服务器环境搭建-5 Nexus搭建与使用介绍

背景 本文介绍nexus的安装、配置和使用&#xff0c;之后通过案例的方式演示使用过程。 1.下载和安装 本文使用Nexus 3.x版本进行演示 下载地址&#xff1a;Download Nexus Repository OSS | Sonatype 国外网站下载速度较慢&#xff0c;也可以通过百度网盘下载(提取码:9999): …

大模型算法岗位面试攻略:100个常见问题详解,高效备战拿下三个offer!

导读 大模型时代很多企业都在开发自己的大模型&#xff0c;这直接刺激了大模型岗位的需求。本文为大家整理了大模型面试相关的知识点&#xff0c;希望对大家面试求职有所帮助。 今天分享大模型面试相关知识点&#xff0c;持续更新。 1. RAG技术体系的总体思路 数据预处理->…

史级低价1元《魔域口袋版》神话斗神·黑悟空 带领战队傲视群雄

原标题&#xff1a;《魔域口袋版》神话斗神黑悟空 1元让您与战队成员战场称霸 易采游戏网9月11日消息&#xff1a;《魔域口袋版》凭借其刺激的战斗体验和丰富的内容&#xff0c;已经成为无数玩家追逐的热血战场。而今&#xff0c;一项前所未有的重磅更新即将引爆整个游戏圈——…

【MATLAB】模拟退火算法

模拟退火算法的MATLAB实现 模拟退火算法简介模拟退火算法应用实例关于计算结果 模拟退火算法简介 1982年&#xff0c;Kirkpatrick 将退火思想引入组合优化领域&#xff0c;提出了一种能够有效解决大规模组合优化问题的算法&#xff0c;尤其对 NP 完全问题表现出显著优势。模拟…

STM32+ESP8266+MQTT协议连接阿里云实现温湿度上传

前期步骤: ESP8266下载固件→连接阿里云-CSDN博客 keil文件&#xff1a;大家可以直接下载&#xff0c;也可以在后台私信我获取 《STM32ESP8266MQTT协议连接阿里云实现温湿度上传》 keil文件源码 一、代码修改部分 1、mqtt.h文件中的修改 2、wifi.h文件中的修改 3、main.…

MWORKS 2024b 新版发布:全球首创的Julia静态代码生成

MWORKS 2024b现已正式发布&#xff01;上一版本自发布以来便受到广泛关注&#xff0c;用户遍及航天、航空、车辆、能源等各大产业及全国超过200所高校。在取得一系列应用成果的同时&#xff0c;也在吸纳海量用户反馈。MWORKS 2024b的重磅升级包括以下几个方面&#xff1a; 1.两…

ST官方 VSCode 插件安装及配置工程参考

写在前头 VSCode的用法和插件是月初参加ST官方北京站举办的线下培训中&#xff0c;厂家AE工程师给我们讲的&#xff0c;不同于已经很多人用的&#xff08;并且一直在吵的&#xff09;keil assistant什么的&#xff0c;用的是CMake编译&#xff0c;抛弃了原有的keil&#xff0c;…

ASUS华硕ROG幻16 Air 2024款锐龙AI版GA605WI,GA605WV工厂模式原厂Win11系统,含MyASUS WinRE恢复重置还原功能

适用型号&#xff1a;【GA605WI、GA605WV】&#xff0c;原装出厂Windows11系统工厂包下载 链接&#xff1a;https://pan.baidu.com/s/1IVolLwB7fddGKZY0IxOqaA?pwd62e2 提取码&#xff1a;62e2 华硕原装系统工厂安装包&#xff0c;带有MyASUS WinRE RECOVERY恢复功能、自带…

控价中数据清洗有什么创新方法

在品牌控价的过程中&#xff0c;数据清洗犹如一把精准的雕刻刀&#xff0c;雕琢出准确而有价值的信息宝藏。以下是关于有效进行数据清洗的创新之策&#xff1a; 智能清洗助手 引入先进的人工智能技术&#xff0c;打造智能数据清洗助手。通过机器学习算法&#xff0c;让助手自…

CCF推荐B类会议和期刊总结:(计算机网络领域)

CCF推荐B类会议和期刊总结&#xff08;计算机网络领域&#xff09; 在计算机网络领域&#xff0c;中国计算机学会&#xff08;CCF&#xff09;推荐的B类会议和期刊代表了该领域的较高水平。以下是对所有B类会议和期刊的总结&#xff0c;包括全称、出版社、dblp文献网址以及所属…

【Qt网络编程基础】Tcp服务器和客户端(只支持一对一)

目录 一、编写思路 1、服务器 总体思路 详细思路 1. 构造函数 (Widget::Widget) 2. 启动监听 (Widget::on_btn_start_clicked) 3. 停止监听 (Widget::on_btn_cease_clicked) 4. 发送消息 (Widget::on_btn_info_clicked) 5. 接收消息 (Widget::receive_message) 6. 处…

了解Redis集群概念,集群如何选举主节点

请给胡广一个免费的三连吗&#xff1f;感谢&#xff01; 1. Redis集群 1.1 集群概念 Redis主从架构和Redis集群架构是两种不同的概念&#xff0c;大家刚接触Redis时经常弄混淆。胡广给大家贴下Redis官网对两者的解释。 &#xff08;1&#xff09;Redis主从架构 Redis主从实…

通讯录

在写一个程序前需要了解的知识&#xff0c;需要对通讯录的流程了如指掌&#xff0c;才能写出一个完整的程序 。 写一个主函数&#xff0c;里面包含菜单、对菜单的选择、以及循环。创建个人信息结构体&#xff0c;多人构成的结构体数组。分析每一个函数&#xff1a; 1).增加信…