STM32F103标准外设库——RCC时钟(六)

 个人名片:

🦁作者简介:一名喜欢分享和记录学习的在校大学生
🐯个人主页:妄北y

🐧个人QQ:2061314755

🐻个人邮箱:2061314755@qq.com
🦉个人WeChat:Vir2021GKBS
🐼本文由妄北y原创,首发CSDN🎊🎊🎊
🐨座右铭:大多数人想要改造这个世界,但却罕有人想改造自己。

专栏导航:

妄北y系列专栏导航:

C/C++的基础算法:C/C++是一种常用的编程语言,可以用于实现各种算法,这里我们对一些基础算法进行了详细的介绍与分享。🎇🎇🎇

C/C++刷题库:分享一些关于编程的练习基础题,也会后续加入一系列的算法题,分享自己的解题思路和方法。🥰🥰🥰

计算机网络:对计算机网络的基础知识框架有一个简单的学习与认识,对计算机网络中常见的题型进行一个总结与归纳。🍾🍾🍾

QT基础入门学习:对QT的基础图形化页面设计进行了一个简单的学习与认识,利用QT的基础知识进行了翻金币小游戏的制作🤹🤹🤹

Linux基础编程:初步认识什么是Linux,为什么学Linux,安装环境,进行基础命令的学习,入门级的shell编程。🍻🍻🍻

Linux的系统编程+网络编程:IO编程、进程、线程、进程间通讯(包括管道、信号、信号量、共享内存等)网络编程主要就是socket,poll,epoll,以及对TCP/IP的理解,同时要学会高并发式服务器的编写。🙌🙌🙌

Linux应用开发基础开发:分享Linux的基本概念、命令行操作、文件系统、用户和权限管理等,网络编程相关知识,TCP/IP 协议、套接字(Socket)编程等,可以实现网络通信功能。💐💐💐

Linux项目开发:Linux基础知识的实践,做项目是最锻炼能力的一个学习方法,这里我们会学习到一些简单基础的项目开发与应用,而且都是毕业设计级别的哦。🤸🤸🤸


非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨ 

文章介绍:

🎉本篇文章对STM32学习的相关知识进行分享!🥳🥳🥳

RCC :reset clock control 复位和时钟控制器。本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,STM32 的一切时钟的来龙去脉都会了如指掌。

如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作动力的源泉,让我们一起加油,一起奔跑,让我们顶峰相见!!!💪💪💪

🎁感谢大家点赞👍收藏⭐评论✍️

目录:

目录

一、认识RCC

1.RCC 框图剖析—时钟部分

2.系统时钟

(1)HSE 高速外部时钟信号

(2)HSI高速内部时钟信号

(3)锁相环时钟 PLLCLK

(4)系统时钟 SYSCLK

(5)AHB 总线时钟 HCLK 

(6)APB2 总线时钟 PCLK2

(7)APB1 总线时钟 PCLK1

 (8)其他时钟

 二、详细分析

1.硬件设计

2.软件设计

3.编程要点

4.代码分析

 (1)使用 HSE 配置系统时钟

(2)使用 HSI 配置系统时钟

(3)初始化MCO引脚

 (4)主函数


一、认识RCC

        设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 等于多少)、设置 APB2 分频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各个外设的分频因子; 控制 AHB、APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。对于 SYSCLK、 HCLK、PCLK2、PCLK1 这四个时钟的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M, PCLK1=HCLK/2 = 36M。这个时钟配置也是库函数的标准配置,我们用的最多的就是这个。

1.RCC 框图剖析—时钟部分

        时钟树单纯讲理论的话会比较枯燥,如果选取一条主线,并辅以代码,先主后次讲解的话会很容 易,而且记忆还更深刻。我们这里选取库函数时钟系统时钟函数:**SetSysClockTo72();** 以这个函数的编写流程来讲解时钟树。

2.系统时钟

(1)HSE 高速外部时钟信号

        HSE 是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从 4-16MHZ 不等。当使用有源晶振时,时钟从 OSC_IN 引脚进入,OSC_OUT 引脚悬空,当选用无源晶振时,时钟从 OSC_IN 和 OSC_OUT 进入,并且要配谐振电容。

(2)HSI高速内部时钟信号

        当 HSE 故障的时候,如果 PLL 的时钟来源是 HSE,那么当 HSE 故障的时候,不仅 HSE 不能使用,连 PLL 也会被关闭,这个时候系统会自动切换 HSI 作为系统时钟,此时 SYSCLK=HSI=8M, 如果没有开启 CSS 和 CSS 中断的话,那么整个系统就只能在低速率运行,这是系统跟瘫痪没什么两样。如果开启了 CSS 功能的话,那么可以当 HSE 故障时,在 CSS 中断里面采取补救措施, 使用 HSI,并把系统时钟设置为更高的频率,最高是 64M,64M 的频率足够一般的外设使用,如: ADC、SPI、I2C 等。


 

(3)锁相环时钟 PLLCLK

        通过设置 PLL 的倍频因子,可以对 PLL 的时钟来源进行倍频,倍频因子可以是:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],具体设置成多少,由时钟配置寄存器 CFGR 的位 21-18:PLLMUL[3:0] 设置。我们这里设置为 9 倍频,因为上一步我们设置 PLL 的时钟来源为 HSE=8M,所以经过 PLL 倍频之后的 PLL 时钟:PLLCLK = 8M *9 = 72M。72M 是 ST 官方推荐的稳定运行时钟,如果你想超频的话,增大倍频因子即可, 最高为 128M。我们这里设置 PLL 时钟:PLLCLK = 8M *9 = 72M。

(4)系统时钟 SYSCLK

        系统时钟来源可以是:HSI、PLLCLK、HSE,具体的时钟配置寄存器 CFGR 的位 1-0: SW[1:0] 设置。我们这里设置系统时钟:SYSCLK = PLLCLK = 72M。

(5)AHB 总线时钟 HCLK 

        系统时钟 SYSCLK 经过 AHB 预分频器分频之后得到时钟叫 APB 总线时钟,即 HCLK, 分频因子可以是:[1,2,4,8,16,64,128,256,512],具体的由时钟配置寄存器 CFGR 的位 7-4 :HPRE[3:0] 设置。片上大部分外设的时钟都是经过 HCLK 分频得到,至于 AHB 总线上的外设的时钟设置为多少,得等到我们使用该外设的时候才设置,我们这里只需 粗线条的设置好 APB 的时钟即可。我们这里设置为 1 分频,即 HCLK=SYSCLK=72M。

(6)APB2 总线时钟 PCLK2

        APB2 总线时钟 PCLK2 由 HCLK 经过高速 APB2 预分频器得到,分频因子可以 是:[1,2,4,8,16],具体由时钟配置寄存器 CFGR 的位 13-11:PPRE2[2:0] 决定。PCLK2 属于高速的总线时钟,片上高速的外设就挂载到这条总线上,比如全部的 GPIO、US-ART1、SPI1 等。至于 APB2 总线上的外设的时钟设置为多少,得等到我们使用该外 设的时候才设置,我们这里只需粗线条的设置好 APB2 的时钟即可。我们这里设置为 1 分频,即 PCLK2 = HCLK = 72M。

(7)APB1 总线时钟 PCLK1

        APB1总线时钟 PCLK1由HCLK 经过低速APB预分频器得到,分频因子可以是:[1,2,4,8,16],具体的由时钟配置寄存器 CFGR 的位 10-8:PRRE1[2:0] 决定。PCLK1 属于低速 的总线时钟,最高为 36M,片上低速的外设就挂载到这条总线上,比如 USART2/3/4/5、 SPI2/3,I2C1/2 等。至于 APB1 总线上的外设的时钟设置为多少,得等到我们使用该 外设的时候才设置,我们这里只需粗线条的设置好 APB1 的时钟即可。我们这里设置为2分频,即 PCLK1=HCLK/2 = 36M。

 (8)其他时钟

        ADC 时钟

        ADC 时钟由 PCLK2 经过 ADC 预分频器得到,分频因子可以是 [2,4,6,8],具体的由 时钟配置寄存器 CFGR 的位 15-14:ADCPRE[1:0] 决定。很奇怪的是怎么没有 1 分频。 ADC 时钟最高只能是 14M,如果采样周期设置成最短的 1.5 个周期的话,ADC 的转 换时间可以达到最短的 1us。如果真要达到最短的转换时间 1us 的话,那 ADC 的时钟 就得是 14M,反推 PCLK2 的时钟只能是:28M、56M、84M、112M,鉴于 PCLK2 最 高是 72M,所以只能取 28M 和 56M。

        RTC 时钟、独立看门狗时钟 

        RTC时钟可由HSE/128 分频得到,也可由低速外部时钟信号LSE提供,频率为 32.768KHZ,也可由低速内部时钟信号LSI提供,具体选用哪个时钟由备份域控制寄存器BDCR 的位 9-8:RTCSEL[1:0] 配置。独立看门狗的时钟由 LSI 提供,且只能是由 LSI 提供,LSI 是低速的内部时钟信号,频率为 30~60KHZ 直接不等,一般取 40KHZ。

        MCO 时钟输出

        MCO 是 microcontroller clock output 的缩写,是微控制器时钟输出引脚,在 STM32 F1 系列中由 PA8 复用所得,主要作用是可以对外提供时钟,相当于一个有源晶振。MCO 的时钟来源可以是:PLLCLK/2、HSI、HSE、SYSCLK,具体选哪个由时钟配置寄存器 CFGR 的位 26-24:MCO[2:0] 决定。除了对外提供时钟这个作用之外,我们还可以通过示波器监控 MCO 引脚的时钟输出来验证我们的系统时钟配置是否正确。

 二、详细分析

1.硬件设计

        RCC         LED 一个

        RCC 是单片机内部资源,不需要外部电路。通过 LED 闪烁的频率来直观的判断不同系统时钟频率对软件延时的效果。

2.软件设计

         我们编写两个 RCC 驱动文件,bsp_clkconfig.h 和 bsp_clkconfig.c,用来存放 RCC 系统时钟配置函数。

3.编程要点

        编程要点对应着时钟树图中的序号。

        1、开启 HSE/HSI ,并等待 HSE/HSI 稳定

        2、设置 AHB、APB2、APB1 的预分频因子

        3、设置 PLL 的时钟来源,和 PLL 的倍频因子,设置各种频率主要就是在这里设置

        4、开启 PLL,并等待 PLL 稳定

        5、把 PLLCK 切换为系统时钟 SYSCLK

        6、读取时钟切换状态位,确保 PLLCLK 被选为系统时钟

4.代码分析

 (1)使用 HSE 配置系统时钟

     


/** 使用HSE时,设置系统时钟的步骤* 1、开启HSE ,并等待 HSE 稳定* 2、设置 AHB、APB2、APB1的预分频因子* 3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置* 4、开启PLL,并等待PLL稳定* 5、把PLLCK切换为系统时钟SYSCLK* 6、读取时钟切换状态位,确保PLLCLK被选为系统时钟*//* 设置 系统时钟:SYSCLK, AHB总线时钟:HCLK, APB2总线时钟:PCLK2, APB1总线时钟:PCLK1* PCLK2 = HCLK = SYSCLK* PCLK1 = HCLK/2,最高只能是36M* 参数说明:pllmul是PLL的倍频因子,在调用的时候可以是:RCC_PLLMul_x , x:[2,3,...16]* 举例:User_SetSysClock(RCC_PLLMul_9);  则设置系统时钟为:8MHZ * 9 = 72MHZ*       User_SetSysClock(RCC_PLLMul_16); 则设置系统时钟为:8MHZ * 16 = 128MHZ,超频慎用** HSE作为时钟来源,经过PLL倍频作为系统时钟,这是通常的做法*/void HSE_SetSysClock(uint32_t pllmul)
{__IO uint32_t StartUpCounter = 0, HSEStartUpStatus = 0;// 把RCC外设初始化成复位状态RCC_DeInit();//使能HSE,开启外部晶振,野火开发板用的是8MRCC_HSEConfig(RCC_HSE_ON);// 等待 HSE 启动稳定HSEStartUpStatus = RCC_WaitForHSEStartUp();// 只有 HSE 稳定之后则继续往下执行if (HSEStartUpStatus == SUCCESS){
//----------------------------------------------------------------------//// 这两句是操作FLASH闪存用到的,如果不操作FLASH的话,这两个注释掉也没影响// 使能FLASH 预存取缓冲区FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// SYSCLK周期与闪存访问时间的比例设置,这里统一设置成2// 设置成2的时候,SYSCLK低于48M也可以工作,如果设置成0或者1的时候,// 如果配置的SYSCLK超出了范围的话,则会进入硬件错误,程序就死了// 0:0 < SYSCLK <= 24M// 1:24< SYSCLK <= 48M// 2:48< SYSCLK <= 72MFLASH_SetLatency(FLASH_Latency_2);
//----------------------------------------------------------------------//// AHB预分频因子设置为1分频,HCLK = SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); // APB2预分频因子设置为1分频,PCLK2 = HCLKRCC_PCLK2Config(RCC_HCLK_Div1); // APB1预分频因子设置为1分频,PCLK1 = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2);//-----------------设置各种频率主要就是在这里设置-------------------//// 设置PLL时钟来源为HSE,设置PLL倍频因子// PLLCLK = 8MHz * pllmulRCC_PLLConfig(RCC_PLLSource_HSE_Div1, pllmul);
//------------------------------------------------------------------//// 开启PLL RCC_PLLCmd(ENABLE);// 等待 PLL稳定while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}// 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLKRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);// 读取时钟切换状态位,确保PLLCLK被选为系统时钟while (RCC_GetSYSCLKSource() != 0x08){}}else{ // 如果HSE开启失败,那么程序就会来到这里,用户可在这里添加出错的代码处理// 当HSE开启失败或者故障的时候,单片机会自动把HSI设置为系统时钟,HSI是内部的高速时钟,8MHZwhile (1){}}
}

        这个函数采用库函数编写,函数有个形参 pllmul,pllmul 用来设置 PLL 的倍频因子,在调用的时 候形参可以是:RCC_PLLMul_x , x:[2,3,…16],这些宏来源于库函数的定义,宏展开是一些 32 位的十六进制数,具体功能是配置了时钟配置寄存器 CFGR 的位 21-18PLLMUL[3:0],预先定义好倍频因子,方便调用。

(2)使用 HSI 配置系统时钟


/** 使用HSI时,设置系统时钟的步骤* 1、开启HSI ,并等待 HSI 稳定* 2、设置 AHB、APB2、APB1的预分频因子* 3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置* 4、开启PLL,并等待PLL稳定* 5、把PLLCK切换为系统时钟SYSCLK* 6、读取时钟切换状态位,确保PLLCLK被选为系统时钟*//* 设置 系统时钟:SYSCLK, AHB总线时钟:HCLK, APB2总线时钟:PCLK2, APB1总线时钟:PCLK1* PCLK2 = HCLK = SYSCLK* PCLK1 = HCLK/2,最高只能是36M* 参数说明:pllmul是PLL的倍频因子,在调用的时候可以是:RCC_PLLMul_x , x:[2,3,...16]* 举例:User_SetSysClock(RCC_PLLMul_9);  则设置系统时钟为:4MHZ * 9 = 36MHZ*       User_SetSysClock(RCC_PLLMul_16); 则设置系统时钟为:4MHZ * 16 = 64MHZ** HSI作为时钟来源,经过PLL倍频作为系统时钟,这是在HSE故障的时候才使用的方法* HSI会因为温度等原因会有漂移,不稳定,一般不会用HSI作为时钟来源,除非是迫不得已的情况* 如果HSI要作为PLL时钟的来源的话,必须二分频之后才可以,即HSI/2,而PLL倍频因子最大只能是16* 所以当使用HSI的时候,SYSCLK最大只能是4M*16=64M*/void HSI_SetSysClock(uint32_t pllmul)
{__IO uint32_t HSIStartUpStatus = 0;// 把RCC外设初始化成复位状态RCC_DeInit();//使能HSIRCC_HSICmd(ENABLE);// 等待 HSI 就绪HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY;// 只有 HSI就绪之后则继续往下执行if (HSIStartUpStatus == RCC_CR_HSIRDY){
//----------------------------------------------------------------------//// 这两句是操作FLASH闪存用到的,如果不操作FLASH的话,这两个注释掉也没影响// 使能FLASH 预存取缓冲区FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// SYSCLK周期与闪存访问时间的比例设置,这里统一设置成2// 设置成2的时候,SYSCLK低于48M也可以工作,如果设置成0或者1的时候,// 如果配置的SYSCLK超出了范围的话,则会进入硬件错误,程序就死了// 0:0 < SYSCLK <= 24M// 1:24< SYSCLK <= 48M// 2:48< SYSCLK <= 72MFLASH_SetLatency(FLASH_Latency_2);
//----------------------------------------------------------------------//// AHB预分频因子设置为1分频,HCLK = SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); // APB2预分频因子设置为1分频,PCLK2 = HCLKRCC_PCLK2Config(RCC_HCLK_Div1); // APB1预分频因子设置为1分频,PCLK1 = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2);//-----------------设置各种频率主要就是在这里设置-------------------//// 设置PLL时钟来源为HSE,设置PLL倍频因子// PLLCLK = 4MHz * pllmulRCC_PLLConfig(RCC_PLLSource_HSI_Div2, pllmul);
//------------------------------------------------------------------//// 开启PLL RCC_PLLCmd(ENABLE);// 等待 PLL稳定while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}// 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLKRCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);// 读取时钟切换状态位,确保PLLCLK被选为系统时钟while (RCC_GetSYSCLKSource() != 0x08){}}else{ // 如果HSI开启失败,那么程序就会来到这里,用户可在这里添加出错的代码处理// 当HSE开启失败或者故障的时候,单片机会自动把HSI设置为系统时钟,HSI是内部的高速时钟,8MHZwhile (1){}}
}

        HSI 设置系统时钟函数跟 HSE 设置系统时钟函数在原理上是一样的,有一个区别的地方就是, HSI 必须 2 分频之后才能作为 PLL 的时钟来源,所以使用 HSI 时,最大的系统时钟 SYSCLK 只 能是 HSI/2*16=4*16=64MHZ。

//  软件延时函数,使用不同的系统时钟,延时不一样
void Delay(__IO uint32_t nCount)	
{for(; nCount != 0; nCount--);
}

        软件延时函数,使用不同的系统时钟,延时时间不一样,可以通过 LED 闪烁的频率来判断。

(3)初始化MCO引脚

        在 STM32F103 系列中,PA8 可以复用为 MCO 引脚,对外提供时钟输出,我们也可以用示波器监控该引脚的输出来判断我们的系统时钟是否设置正确。

** 初始化MCO引脚PA8* 在F1系列中MCO引脚只有一个,即PA8,在F4系列中,MCO引脚会有两个*/
void MCO_GPIO_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;// 开启GPIOA的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// 选择GPIO8引脚GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//设置为复用功能推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设置IO的翻转速率为50MGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;// 初始化GPIOA8GPIO_Init(GPIOA, &GPIO_InitStructure);
}

 (4)主函数

    // 设置MCO引脚输出时钟,用示波器即可在PA8测量到输出的时钟信号// MCO引脚输出可以是HSE,HSI,PLLCLK/2,SYSCLK//RCC_MCOConfig(RCC_MCO_HSE);	             // 8M	        //RCC_MCOConfig(RCC_MCO_HSI);	           // 8M 	        //RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);    // 36M		RCC_MCOConfig(RCC_MCO_SYSCLK);		     // 72M  

        我们初始化 MCO 引脚之后,可以直接调用库函数 RCC_MCOConfig() 来选择 MCO 时钟来源。 

int main(void)
{	// 程序来到main函数之前,启动文件:statup_stm32f10x_hd.s已经调用SystemInit()函数把系统时钟初始化成72MHZ// SystemInit()在system_stm32f10x.c中定义// 如果用户想修改系统时钟,可自行编写程序修改// 重新设置系统时钟,根据需要修改,一般设置最高为128MHz// SYSCLK = 8M * RCC_PLLMul_x, x:[2,3,...16]//HSE_SetSysClock(RCC_PLLMul_9);HSI_SetSysClock(RCC_PLLMul_16);// MCO 引脚初始化MCO_GPIO_Config();// 设置MCO引脚输出时钟,用示波器即可在PA8测量到输出的时钟信号// MCO引脚输出可以是HSE,HSI,PLLCLK/2,SYSCLK//RCC_MCOConfig(RCC_MCO_HSE);	             // 8M	        //RCC_MCOConfig(RCC_MCO_HSI);	           // 8M 	        //RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);    // 36M		RCC_MCOConfig(RCC_MCO_SYSCLK);		     // 72M  // LED 端口初始化LED_GPIO_Config();while (1){LED1( ON );			  // 亮Delay(0x0FFFFF);LED1( OFF );		  // 灭 Delay(0x0FFFFF);		}}

        在主函数中,可以调用 HSE_SetSysClock() 或者 HSI_SetSysClock() 这两个函数把系统时钟设置成各种常用的时钟,然后通过 MCO 引脚监控,或者通过 LED 闪烁的快慢体验不同的系统时钟对同一个软件延时函数的影响。 

MCO=SYSCLK=72M

MCO=HSI=8M 

大佬觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥任务在无形中完成,价值在无形中升华,让我们一起加油吧!🌙🌙🌙

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

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

相关文章

PyQt5零基础入门(四)——信号与槽

信号与槽 前言信号与槽单对单直接连接使用lambda表达式 信号与槽多对多一个信号连接多个槽多个信号连接一个槽信号与信号连接 自定义信号 前言 PyQt5的信号与槽是一种对象之间的通信机制&#xff0c;允许一个QObject对象发出信号&#xff0c;与之相连接的槽函数将会自动执行。…

漏洞复现-科荣AIO UtilServlet任意命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

【MySQL】管理用户

DCL-管理用户 查询用户 use mysql; select * from user;创建用户 create user 用户名主机名 identified by 密码;修改用户密码 alter user 用户名主机名 identidied with mysql_native_password by 新密码;删除用户 drop user 用户名主机名;创建用户test&#xff0c;只能够…

地震预测系统项目实现

整个项目思路即在一组观测数据中&#xff0c;地震专家&#xff08;即用户&#xff09;输入观测窗口的最小数量和最大数量&#xff0c;进行预测峰值点 数据文件如图所示&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<fstream> #include<string> #include&…

CSS 设置背景图片

文章目录 设置背景颜色设置背景图片背景图片偏移量计算原点背景图片尺寸设置背景图片位置设置背景图片重复方式设置背景范围设置背景图片是否跟随元素移动测试背景图片 本文概念部分参考&#xff1a;CSS背景background设置 设置背景颜色 background-color 设置背景颜色 设置…

当我们谈上下文切换时我们在谈些什么

相信不少小伙伴面试时&#xff0c;都被问到过这样一个问题&#xff1a;进程和线程的区别是什么&#xff1f;大学老师会告诉我们&#xff1a;进程是资源分配的基本单位&#xff0c;线程是调度的基本单位。说到调度&#xff0c;就不得不提到CPU的上下文切换了。 何为CPU上下文切换…

香港服务器托管:你对服务器托管了解多少?

在当今数字化的时代&#xff0c;服务器托管已成为企业和网站运营的关键一环。对于许多企业来说&#xff0c;如何选择一个安全、稳定、高效的服务器托管方案&#xff0c;成为了确保业务连续性和数据安全的重要课题。那么&#xff0c;究竟什么是服务器托管&#xff0c;它又有哪些…

使用WAF防御网络上的隐蔽威胁之扫描器

在网络安全领域&#xff0c;扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞&#xff0c;也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义&#xff1a;扫描器是一种自动化工具&#xff0c;用于探测网络和服务器中的漏洞、开放端口、…

手机崩溃日志的查找与分析

手机崩溃日志的查找与分析 摘要 本文介绍了一款名为克魔助手的iOS应用日志查看工具&#xff0c;该工具可以方便地查看iPhone设备上应用和系统运行时的实时日志和崩溃日志。同时还提供了崩溃日志的分析查看模块&#xff0c;可以对苹果崩溃日志进行符号化、格式化和分析&#x…

统计学R语言 实验3 点估计

统计学R语言 实验3 点估计 一、实验目的 1. 掌握理解点估计的相关概念和方法。 2. 掌握理解点估计的估计质量好坏判断方法。 3. 熟悉R语言等语言的集成开发环境。 二、实验分析与内容 某灯泡厂从某日生产的一批灯泡中抽取10个灯泡进行寿命试验&#xff0c;得到灯泡寿命&…

leetocode 15 三数之和

题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例…

Linux网络引导自动安装centos7

目录 一、部署PXE远程安装服务 1. 系统装机的三种引导方式 2. pxe概述 3. 实现过程 4. 搭建过程中服务介绍 4.1 TFTP服务 4.2 vsftp&#xff1a;安装系统镜像文件获取方式 4.3 syslinux 4.4 DHCP服务 5. 操作过程 二、实现Kickstart无人值守安装 1. 安装Kickstart图…

计算机三级(网络技术)——应用题

第一题 61.输出端口S0 &#xff08;直接连接&#xff09; RG的输出端口S0与RE的S1接口直接相连构成一个互联网段 对172.0.147.194和172.0.147.193 进行聚合 前三段相同&#xff0c;将第四段分别转换成二进制 11000001 11000010 前6位相同&#xff0c;加上前面三段 共30…

AI图片物体移除器:高效、便捷的AI照片物体擦除工具

在我们的日常生活中&#xff0c;照片是一种重要的记录和表达方式。然而&#xff0c;有时候我们会遇到需要将照片中的某些物体和元素去除的情况。这时候&#xff0c;传统的图像处理软件可能过于复杂&#xff0c;让人望而却步。为了解决这个问题&#xff0c;AI图片物体移除器的软…

运筹说 第104期 | 2023全球高被引科学家名单发布!

2023年11月15日&#xff0c;全球领先的专业信息服务提供商科睿唯安发布2023年度“全球高被引科学家”名单&#xff0c;遴选全球高校、研究机构和商业组织中对所在研究领域具有重大和广泛影响的顶尖科学人才。最终&#xff0c;来自全球67个国家和地区1300多个机构的6849名科学家…

Node cool 跨域问题的解决

1.问题 自己在写后端接口的时候 发现一个接口在抖音小程序上可以调用 浏览器上也可以直接打开 但是在H5 的请求中 一直就是cors error 前端报这个跨域问题 在后端 报not Found 一开始以为是找不到 经过确定 发现是跨域问题 2.解决 在全局 configuration.ts 文件里有个全局…

申请开启|成为亚马逊云科技 Community Builder,共建云端社区!

在探索由技术打造的云端世界时&#xff0c;和同行者一起学习&#xff0c;与技术专家共同探讨是开发者成长的最佳助力&#xff01; 亚马逊云科技开发者社区 Community Builders 为技术爱好者和新兴思想领袖提供技术资源、学习和交流机会&#xff0c;帮助开发者探索、分享技术相关…

详解SpringCloud微服务技术栈:Gateway网关(断言、过滤器、跨域问题)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;Feign远程调用、最佳实践、错误排查 &#x1f4da;订阅专栏&#xff1a;微服务技术全家…

PuTTY的ppk密钥与OpenSSH密钥之间的相互转换

几个概念说明&#xff1a;id_rsa、id_rsa.pub、ppk、pem 目前有两个主流的密钥格式&#xff1a;OpenSSH格式的密钥 和 PuTTY格式的密钥。 id_rsa和id_rsa.pub 都是OpenSSH格式的密钥。 id_rsa是OpenSSH格式的SSH私钥。 id_rsa.pub是OpenSSH格式的SSH公钥。ppk文件 ppk文件是P…