STM32H750时钟频率和功耗以及RTC功能测试

STM32H750时钟频率和功耗和RTC功能测试


  • 📌相关篇《STM32H750片外QSPI启动配置简要》
✨在使用STM32CubeMX修改STM32H750时钟树参数时,如果使用软件自动求解,这是一个非常耗时的操作,有时候还不一定成功,还是推荐使用手动方式进行配置,这一点和STM32其他系列不同,像STM32F1系列,输入频率参数回车确认后,自动求解很快就自动配置完成了。可能和时钟配置参数的复杂度有关。

🔰STM32H750时钟频率和功耗粗略统计对比

  • 🔖以下是在的单片机正常运行模式下的测试数据。(以个人自制的STM32H750核心板测试为例,数据不代表所有实际使用的STM32H750的运行状态能耗)
  • 🌿外部晶振25MHz , 480MHz主频,电流220mA,1.1w,芯片发热很大
  • 🌿外部晶振 25MHz,400MHz,电流164mA,0.82w,芯片发热比较大
  • 🌿 外部晶振25MHz, 250MHz,电流75mA,0.4w,芯片稍微发热
  • 功耗主要源头和主频关系非常大,与是否使能的外设多少,测试没有明显的影响。
  • 如果跑满单片机主频(480MHz),长期运行,最好贴个散热片辅助散热,供电方面,至少500mA或以上输出能力的电源。

📙时钟频率配置参数

  • 🔧25MHz外部晶振,配置480MHz
    在这里插入图片描述
/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Supply configuration update enable*/HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);/** Configure the main internal regulator output voltage*/__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}__HAL_RCC_SYSCFG_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}/** Configure LSE Drive Capability*/HAL_PWR_EnableBkUpAccess();__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.LSEState = RCC_LSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = 5;RCC_OscInitStruct.PLL.PLLN = 192;RCC_OscInitStruct.PLL.PLLP = 2;RCC_OscInitStruct.PLL.PLLQ = 2;RCC_OscInitStruct.PLL.PLLR = 2;RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;RCC_OscInitStruct.PLL.PLLFRACN = 0;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK){Error_Handler();}
}
  • 🔧25MHz外部晶振,配置400MHz
    在这里插入图片描述
/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Supply configuration update enable*/HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);/** Configure the main internal regulator output voltage*/__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}/** Configure LSE Drive Capability*/HAL_PWR_EnableBkUpAccess();__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.LSEState = RCC_LSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = 5;RCC_OscInitStruct.PLL.PLLN = 160;RCC_OscInitStruct.PLL.PLLP = 2;RCC_OscInitStruct.PLL.PLLQ = 2;RCC_OscInitStruct.PLL.PLLR = 2;RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;RCC_OscInitStruct.PLL.PLLFRACN = 0;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}
  • 🔧8MHz外部晶振,配置480MHz
    在这里插入图片描述
/*** @brief System Clock Configuration* @retval None*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Supply configuration update enable*/HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);/** Configure the main internal regulator output voltage*/__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}__HAL_RCC_SYSCFG_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}/** Configure LSE Drive Capability*/HAL_PWR_EnableBkUpAccess();__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;RCC_OscInitStruct.HSEState = RCC_HSE_ON;RCC_OscInitStruct.LSEState = RCC_LSE_ON;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM = 32;RCC_OscInitStruct.PLL.PLLN = 240;RCC_OscInitStruct.PLL.PLLP = 2;RCC_OscInitStruct.PLL.PLLQ = 2;RCC_OscInitStruct.PLL.PLLR = 2;RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_2;RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;RCC_OscInitStruct.PLL.PLLFRACN = 7753;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK){Error_Handler();}
}
  • 🔧8MHz外部晶振,配置400MHz:RCC_OscInitStruct.PLL.PLLN = 240;
    在这里插入图片描述

📘RTC时钟功能

  • 🔖在使能RTC日历,配置参数时,最好选择RTC_FORMAT_BIN数据格式,在使用RTC_FORMAT_BCD数据格式,在读取数据就可以省去转换。
    在这里插入图片描述

  • 🌿如果使用RTC_FORMAT_BCD数据格式,转换为常规的十进制数参考代码:


RTC_HandleTypeDef hrtc;void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc)
{/* Enable RTC clock */__HAL_RCC_RTC_ENABLE();
}void RTC_BCDToDecimal(RTC_TimeTypeDef *sTime)
{sTime->Hours = ((sTime->Hours & 0xF0) >> 4) * 10 + (sTime->Hours & 0x0F);sTime->Minutes = ((sTime->Minutes & 0xF0) >> 4) * 10 + (sTime->Minutes & 0x0F);sTime->Seconds = ((sTime->Seconds & 0xF0) >> 4) * 10 + (sTime->Seconds & 0x0F);
}int main(void)
{RTC_TimeTypeDef sTime;/* Initialize RTC *//* Get RTC time */HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BCD);/* Convert BCD to decimal */RTC_BCDToDecimal(&sTime);/* Use sTime.Hours, sTime.Minutes, sTime.Seconds as decimal values */while (1){/* Application code */}
}

📗RTC功能测试代码

  • ✨个人采用的是外部flash运行程序,下载算法和程序地址,和常规片内运行的程序有所不同,这一点需要注意。
int main(void)
{/* USER CODE BEGIN 1 */uint8_t Rtctmp=0;RTC_DateTypeDef GetData = {0}; //获取日期结构体RTC_TimeTypeDef GetTime = {0}; //获取时间结构体SCB->VTOR = 0x90000000; /*设置中断向量表偏移地址  *//* USER CODE END 1 *//* Enable the CPU Cache *//* Enable I-Cache---------------------------------------------------------*/SCB_EnableICache();/* Enable D-Cache---------------------------------------------------------*/SCB_EnableDCache();/* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_RTC_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* 使能 PWR 时钟 */
//		__HAL_RCC_RTC_ENABLE();/* PWR_CR:DBF置1,使能RTC、RTC备份寄存器和备份SRAM的访问 */
//		HAL_PWR_EnableBkUpAccess();/* 等待 RTC APB 寄存器同步 */
//		HAL_RTC_WaitForSynchro(&hrtc);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1) {/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);//RTC_FORMAT_BCDHAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);  //RTC_FORMAT_BIN// 每秒打印一次if(Rtctmp != GetTime.Seconds){printf("Data:%04d-%02d-%02d\r\n", 2000 + GetData.Year, GetData.Month, GetData.Date);printf("Time:%02d:%02d:%02d\r\n", GetTime.Hours, GetTime.Minutes, GetTime.Seconds);HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);printf("STM32H750 SysClockFreq:%d \r\n", SystemCoreClock);
//			printf("STM32H750 SysClockFreq:%d \r\n", HAL_RCC_GetSysClockFreq());
//			(void)RTC->DR;}Rtctmp = GetTime.Seconds;}/* USER CODE END 3 */
}

在这里插入图片描述

📒RTC不走时的相关原因分析

  • 🌿在调用读取时间数据 接口函数时,需要同时一起调用时间和日期对应的函数:
        HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN);HAL_RTC_GetDate(&hrtc, &GetData, RTC_FORMAT_BIN);  
  • 🌿在调用上面两个接口函数时,注意第一个形参,该形参是rtc被初始化过的句柄,被定义在:rtc.c中:
RTC_HandleTypeDef hrtc;/* RTC init function */
void MX_RTC_Init(void)
{/* USER CODE BEGIN RTC_Init 0 *//* USER CODE END RTC_Init 0 */RTC_TimeTypeDef sTime = {0};RTC_DateTypeDef DateToUpdate = {0};/* USER CODE BEGIN RTC_Init 1 *//* USER CODE END RTC_Init 1 *//** Initialize RTC Only*/hrtc.Instance = RTC;hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;if (HAL_RTC_Init(&hrtc) != HAL_OK){Error_Handler();}/* USER CODE BEGIN Check_RTC_BKUP *//* USER CODE END Check_RTC_BKUP *//** Initialize RTC and set the Time and Date*/sTime.Hours = 0x20;sTime.Minutes = 0x35;sTime.Seconds = 0x35;if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;DateToUpdate.Month = RTC_MONTH_APRIL;DateToUpdate.Date = 0x22;DateToUpdate.Year = 0x24;if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BCD) != HAL_OK){Error_Handler();}/* USER CODE BEGIN RTC_Init 2 *//* USER CODE END RTC_Init 2 */}
  • 🔖如果传递的是一个自己定义的一个rtc句柄(例如:RTC_HandleTypeDef Rtc_Handle;),而未进行初始化操作,直接作为形参传入该句柄,将会导致不走时。
  • 🎉设置RTC时间的时候,用的那个变量作为句柄的,在调用读取时间信息的时候,也必须要使用相同的变量作为句柄来读取。
  • 🔱如果必须要需使用自己定义的句柄,参考代码如下来做:
RTC_HandleTypeDef Rtc_Handle;/*** @brief  设置时间和日期* @param  无* @retval 无*/
void RTC_TimeAndDate_Set(void)
{RTC_DateTypeDef  RTC_DateStructure;RTC_TimeTypeDef  RTC_TimeStructure;// 初始化时间RTC_TimeStructure.TimeFormat = RTC_HOURFORMAT12_AM;RTC_TimeStructure.Hours = 8;        RTC_TimeStructure.Minutes = 12;      RTC_TimeStructure.Seconds = 26;      HAL_RTC_SetTime(&Rtc_Handle,&RTC_TimeStructure, RTC_FORMAT_BIN);// 初始化日期	RTC_DateStructure.WeekDay = RTC_WEEKDAY_TUESDAY;       RTC_DateStructure.Date = 23;         RTC_DateStructure.Month = RTC_MONTH_APRIL;         RTC_DateStructure.Year = 24;        HAL_RTC_SetDate(&Rtc_Handle,&RTC_DateStructure, RTC_FORMAT_BIN);}/*** @brief  显示时间和日期* @param  无* @retval 无*/
void RTC_TimeAndDate_Show(void)
{uint8_t Rtctmp=0;RTC_TimeTypeDef RTC_TimeStructure;RTC_DateTypeDef RTC_DateStructure;while(1){// 获取日历HAL_RTC_GetTime(&Rtc_Handle, &RTC_TimeStructure, RTC_FORMAT_BIN);HAL_RTC_GetDate(&Rtc_Handle, &RTC_DateStructure, RTC_FORMAT_BIN);// 每秒打印一次if(Rtctmp != RTC_TimeStructure.Seconds){// 打印日期printf("The Date :  Y:20%0.2d - M:%0.2d - D:%0.2d - W:%0.2d\r\n", RTC_DateStructure.Year,RTC_DateStructure.Month, RTC_DateStructure.Date,RTC_DateStructure.WeekDay);// 打印时间printf("The Time :  %0.2d:%0.2d:%0.2d \r\n\r\n", RTC_TimeStructure.Hours, RTC_TimeStructure.Minutes, RTC_TimeStructure.Seconds);}Rtctmp = RTC_TimeStructure.Seconds;}	
}
  • 🌿另一个时钟不走时的可能就是,在使用外部低速时钟源作为时钟源时,外部32.756KHz晶振没有起振所致。

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

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

相关文章

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时,默认有个宽度 207px; 父元素有固定宽度时,以父元素宽度为准; Element Plus 父元素不限制宽度时,默认100%; 父元素有固定宽度时,以父元素宽度为准&#x…

CDN、边缘计算与云计算:构建现代网络的核心技术

在数字化时代,数据的快速传输和处理是保持竞争力的关键。内容分发网络(CDN)、边缘计算和云计算共同构成了现代互联网基础架构的核心,使内容快速、安全地到达用户手中。本文将探讨这三种技术的功能、相互关系以及未来的发展趋势。 …

使用表格法插入公式和编号

如何将公式和编号优雅地插入到论文当中呢? 首先插入一个1行2列的表格 调整一下 输入公式方法一:感觉墨迹公式挺好用的,word自带的 输入公式方法二:图片转LATEX代码 这个方法更快 分享一个公式识别网站 图片识别得到LATEX代码&…

atlas 500容器(ubuntu20.04)搭建

1.docker 及环境搭建略 2.宿主机驱动安装略 3.宿主机中能正确使用npu-smi 4.docker 拉取略 5.docker 容器启动 docker run -itd --device/dev/davinci0 --device/dev/davinci_manager --device/dev/devmm_svm --device/dev/hisi_hdc -v /run/board_cfg.ini:/run/b…

Pycharm远程连接实验室服务器Conda环境配置

如何配置Pycharm和远程服务器 这类博客较多,参考内容 https://blog.csdn.net/fengbao24/article/details/125515542 Python解释器选择(conda3) 1. Settings -> Add Interpreter -> On SSH 注意,这里的SSH需要在你把远程…

OpenHarmony南向开发案例:【 智能家居中控】

应用场景简介 智能家居。 今天打造的这一款全新智能家庭控制系统,凸显应用在智能控制和用户体验的特点,开创国内智能家居系统体验新局面。新的系统主要应用在鸿蒙生态。 工程版本 系统版本/API版本:OpenHarmony SDK API 8IDE版本&#xf…

c++的策略模式,就是多态

一、定义: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。 策略模式让算法独立于使用它的客户而独立变化。 二,核心 抽象策略(抽象基类)(Strategy&#xff09…

酷开科技逐步为用户构建健全的智慧家庭生活场景

大规模与精细化人群技术则是通过大量的计算能力和精细化的运营能力,建立用户专属数据储存区域,使得用户在使用不同电视的观影偏好和兴趣能够能够得以延续。 不拘泥于自有品牌终端数量,酷开系统除了集成在创维电视上,还服务于飞利…

idea上传项目到gitee(码云)

1、打开码云,新建仓库 2、创建 3、这就是创建成功的页面 4、复制仓库地址,后面需要用到 2、打开我们的项目:例如我现在的项目 1、idea创建git仓库 2、选择我们项目文件夹的目录 3、查看文件是否变色,变色表示成功了 4、添加到缓…

0元实现网站HTTP升级到HTTPS(免费https证书)

HTTPS就是在HTTP的基础上加入了SSL,将一个使用HTTP的网站免费升级到HTTPS主要包括以下几个步骤: 1 获取SSL证书 永久免费的https证书申请通道https://www.joyssl.com/certificate/select/free.html?nid16 免费的SSL证书同样能实现HTTPS,国…

SpringBoot内容协商机制(就是接受数据的类型如json,xml)

目录 一、基于请求头的内容协商机制 二、基于请求参数的内容协商机制 一、基于请求头的内容协商机制 如果我们的Java服务为浏览器和安卓手机同时提供服务,浏览器期望接受的请求是JSON格式,安卓客户端期望接收的请求是XML格式,这个时候是否需…

C++中的智能指针

C中的智能指针 文章目录 C中的智能指针1.为什么需要智能指针?2.智能指针的类型2.1 std::shared_ptr2.2 std::unique_ptr2.3 std::weak_ptr Reference 笔者在学习ROS2的过程中,遇到了std::make_shared这种用法,一眼看不懂,才发现笔…

Java 网络编程之TCP(三):基于NIO实现服务端,BIO实现客户端

前面的文章,我们讲述了BIO的概念,以及编程模型,由于BIO中服务器端的一些阻塞的点,导致服务端对于每一个客户端连接,都要开辟一个线程来处理,导致资源浪费,效率低。 为此,Linux 内核…

华为数通HCIA ——企业网络架构以及产品线

一.学习目标:精讲网络技术,可以独立搭建和维护中小企业网络! 模拟器(华为方向请安装ENSP,Ensp-Lite已有安装包,号称功能更加完善-这意味着要耗费更多的系统资源但是仅对华为内部伙伴申请后方可使用&#x…

VS2022配置和搭建QT

一、下载QT 可以去QT官网下载:https://www.qt.io/product/development-tools。 直接安装。 二、安装qt插件 直接在vs插件市场搜索就行。 安装的时候根据提示,关闭vs自动安装 再次进去vs提示你选择qt版本,psth里边找到安装版本的qmake.exe就行 配…

卡尔曼滤波器(一):卡尔曼滤波器简介

观看MATLAB技术讲座笔记,该技术讲座视频来自bilibili账号:MATLAB中国。 一、什么是卡尔曼滤波器 卡尔曼滤波器是一种优化估计算法,是一种设计最优状态观测器的方法,其功能为: 估算只能被间接测量的变量;通…

https加密证书

网站要出去安全模式访问,加强网络安全就需要使用HTTPS加密证书。 本文主要介绍什么是HTTPS加密证书,如何申请HTTPS加密证书,如何安装HTTPS加密证书等问题展开讨论。 什么是HTTPS加密证书? HTTPS加密证书的行业产品用语叫作SSL证…

互联网大佬座位排排坐:马化腾第一,雷军第二

关注卢松松,会经常给你分享一些我的经验和观点。 这是马化腾、雷军、张朝阳、周鸿祎的座位,我觉得是按照互联网地位排序的。 马化腾坐头把交椅,这个没毛病,有他在的地方,其他几位都得喊声“大哥”。雷军坐第二把交椅…

缓解工作压力的小窍门:保持健康与创新

目录 1 前言2 工作与休息的平衡3 保持心理健康4 社交与网络建设5 结语 1 前言 作为程序员,我们常常承受着高度的工作压力和持续的创新挑战。为了保持高效和健康,我们需要采取一些方法来缓解工作压力,同时促进个人的心理和身体健康。 2 工作…

如何在PostgreSQL中设置自动清理过期数据的策略

文章目录 方法一:使用临时表和定期清理步骤:示例代码:创建临时表:定期清理脚本(bash psql): 方法二:使用分区表和定期清理步骤:示例代码:创建分区表&#xf…