STM32CubeMX学习笔记12 ---低功耗模式

在实际使用中很多产品都需要考虑低功耗的问题,STM32F10X提供了三种低功耗模式:睡眠模式(Sleep mode)、停机模式(Stop mode)和待机模式(Standby mode)。这些低功耗模式可以有效减少系统功耗,延长电池寿命,对于需要长时间运行的电池供电设备尤为重要。

注意:在进入低功耗模式时,STlink将无法下载程序,需要重启单片机!!

1、 低功耗模式简介

        系统或电源复位后,微处理器处于运行状态,运行状态下HCLK为CPU提供时钟,内核执行程序代码。当CPU不需继续运行时(例如等待某个外部事件),可以利用多个低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。STM32提供了3种低功耗模式,以达到不同层次的降低功耗的目的: - 睡眠模式(CM3内核停止工作,外设仍在运行)(功耗最高) - 停止模式(所有时钟都停止)(典型电流消耗20uA左右) - 待机模式(1.8V内核电源关闭)(最低电流消耗2uA左右)

        在运行模式下,也可以通过如下方式降低功耗: - 降低系统时钟 - 关闭APB和AHB总线上未被使用的外设的时钟

一、睡眠模式

1、睡眠模式简介

        睡眠模式,它使处理器暂停执行,并且可以通过外部事件或中断来唤醒。在睡眠模式下,(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行,以便在唤醒时快速恢复正常运行。

睡眠模式的进入:两种睡眠模式,SLEEP-NOW或 SLEEP-ON-EXIT。

SLEEP-NOW:如果SLEEPONEXIT位被清除,当WRI或WFE被执行时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时,微控制器就立即进入睡眠模式。
睡眠模式的唤醒:两种唤醒方式,任一中断(WFI)或唤醒事件(WFE)。

WFI:任意一个中断的触发都能唤醒该模式。
WFE:唤醒事件

2、硬件设置

本实验用LED2指示灯提示系统正常运行,指示灯熄灭表示进入睡眠模式,S4按键用外部中断的方式来唤醒待机模式,并使用串口1打印相关调试信息

 3、STM32CubeMX设置

选择芯片STM32F103ZET6,建立工程,设置好工程名称及目录。

RCC设置外接HSE,时钟设置为72M。

设置串口1,并打开串口中断。

将PA0设置成外部中断模式,触发模式选择上升沿触发,GPIO Pull-up/Pull-down中选择Pull-up上拉,并命名为S4。使能外部中断,并将优先级都设置为2.

 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码

4、程序编程

在main.c文件中添加以下程序

int main(void)
{
while (1)
  {
		printf1("Time: 5\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 4\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 3\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 2\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 1\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("进入睡眠模式!\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);   
		//进入睡眠模式
		// 挂起(暂停)系统时钟中断,这里是主要的减少功耗的地方
		HAL_SuspendTick();
			
		/* 进入睡眠模式, 等待任意中断唤醒 ,程序进入睡眠模式后就会在这里停住,
           往下的程序就不运行了,等待中断触发,就可以唤醒睡眠模式,然后继续运行往下的程序*/
		HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
			
		/* 恢复系统时钟中断 */
		HAL_ResumeTick();

		printf1("退出睡眠模式!\r\n");
    }
}

编写外部中断函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){

	delay(10);  //延时消抖,不建议
					
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
        printf1("STM32F103 EXTI test this key is S4\r\n"); //A0
        printf1("中断唤醒睡眠模式\r\n"); //A0
    
    }
}

5、下载验证:

程序编译无误后下载到板子上查看串口输出结果,以看到系统运行时LED2指示灯不断闪烁,5秒钟后进入睡眠模式,此时LDE2指示灯熄灭。当按下S4按键或复位按键时,睡眠模式被唤醒,系统继续运行,同时串口打印提示信息


                        

二、停机模式

1、停机模式简介


  停止模式是在Cortex™-M3的深睡眠模式基础上结合了外设的时钟控制机制,在停止模式下电压 调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和 HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。当一个中断或唤醒事件导致退出停止模式时,会自动选用内部高速时钟(HSI RC振荡器)为系统时钟。

2、硬件设计

本实验用LED2指示灯提示系统正常运行,指示灯熄灭表示进入停机模式,S4按键用外部中断的方式来唤醒停机模式,并使用串口1打印相关调试信息。跟睡眠模式一致。

 3、STM32CubeMX设置

选择芯片STM32F103ZET6,建立工程,设置好工程名称及目录。

RCC设置外接HSE,时钟设置为72M。

设置串口1,并打开串口中断。

将PA0设置成外部中断模式,触发模式选择上升沿触发,GPIO Pull-up/Pull-down中选择Pull-up上拉,并命名为S4。使能外部中断,并将优先级都设置为2.

 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码

4、程序编程

在main.c文件中添加以下程序

int main(void)
{
  //****省略 ****//
    while(1)
    {
        
	printf1("Time: 5\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 4\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 3\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 2\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 1\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("进入停机模式!\r\n");

        // 暂停滴答时钟,防止通过滴答时钟中断唤醒
        HAL_SuspendTick();
        /* 进入停止模式,设置电压调节器为低功耗模式,等待中断唤醒 */
        HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);//在此停止

        //唤醒后需要重新配置RCC时钟才能正常运行
        SYSCLKConfig_STOP();
        // 被唤醒后,恢复滴答时钟
        HAL_ResumeTick();
    printf1("退出停机模式!\r\n");
        
    }
}

//重新配置RCC时钟函数
static void SYSCLKConfig_STOP(void)
{
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    uint32_t pFLatency = 0;
   
    /* 启用电源控制时钟 */
    __HAL_RCC_PWR_CLK_ENABLE();
  
    /* 根据内部 RCC 寄存器获取振荡器配置 */
    HAL_RCC_GetOscConfig(&RCC_OscInitStruct);
  
    /* 从停止模式唤醒后重新配置系统时钟: 启用 HSE 和 PLL */
    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 
    {
        while (1)
        {;
        }
    }
    /* 根据内部 RCC 寄存器获取时钟配置 */
    HAL_RCC_GetClockConfig(&RCC_ClkInitStruct, &pFLatency);
    /* 选择 PLL 作为系统时钟源, 并配置 HCLK、PCLK1 和 PCLK2 时钟分频系数 */
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, pFLatency) != HAL_OK) 
    {
        while (1) 
        {;
        }
    }
}

编写外部中断函数

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){

	delay(10);  //延时消抖,不建议
					
	if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==1)
        printf1("STM32F103 EXTI test this key is S4\r\n"); //A0
        printf1("中断唤醒睡眠模式\r\n"); //A0
    
    }
}

5、下载验证:

程序编译无误后下载到板子上查看串口输出结果,以看到系统运行时LED2指示灯不断闪烁,5秒钟后进入停止模式,此时LDE2指示灯熄灭。当按下S4按键或复位按键时,停止模式被唤醒,系统继续运行,同时串口打印提示信息

三、待机模式

        本文仅对STM32的最低功耗模式(即待机模式)来做介绍。待机模式可实现STM32的最低功耗,该模式实在CM3深睡眠模式时关闭电压调节器,整个1.8V供电区域被断电,PLL/HSI/HSE振荡器也被断电,SRAM和寄存器内容丢失,仅备份的寄存器和待机电路维持供电 下图为STM32进入及退出待机模式的条件:

2、 硬件设计

本实验用LED2指示灯提示系统正常运行,指示灯熄灭表示进入待机模式,S4按键用来唤醒待机模式,并使用串口1打印相关调试信息

  • LED2指示灯
  • S4按键
  • USART1串口

3、STM32CubeMX设置

  • RCC设置外接HSE,时钟设置为72M
  • PE5(LED2)设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平
  • PA0(S4)设置为GPIO上拉输入模式,F103中指定PA0脚为唤醒引脚。
  • USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位

  • 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码 

4、程序编程

在main.c中添加一下程序

void Sys_Enter_Standby(void){
    __HAL_RCC_PWR_CLK_ENABLE();     //使能PWR时钟
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);      //清除Wake_UP标志
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);   //设置WAKEUP用于唤醒
    HAL_PWR_EnterSTANDBYMode();     //进入待机模式
}

int main(void)
{
///****省略*****///
  while (1)
  {
    printf1("Time: 5\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 4\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 3\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Time: 2\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);       
    HAL_Delay(1000);

    printf1("Time: 1\r\n");
    HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);     
    HAL_Delay(1000);

    printf1("Entered Standby Mode...Please press KEY_UP to wakeup system!\r\n");
    Sys_Enter_Standby();		//

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

 5、下载验证:

程序编译无误后下载到板子上查看串口输出结果,以看到系统运行时LED2指示灯不断闪烁,5秒钟后进入待机模式,此时LDE2指示灯熄灭。当按下S4按键或复位按键时,待机模式被唤醒,系统重新运行,同时串口打印提示信息

总结

1.1 睡眠模式
        在睡眠模式中,仅关闭了内核时钟,内核停止运行,但其片上外设,CM3 核心的外设全都还照常运行。有两种方式进入睡眠模式,它的进入方式决定了从睡眠唤醒的方式,分别是 WFI(wait for interrupt) 和 WFE(wait for event),即由等待“中断”唤醒和由“事件”唤醒。

特性和说明:

  • 立即睡眠: 在执行 WFI 或 WFE 指令时立即进入睡眠模式。
  • 退出时睡眠: 在退出优先级最低的中断服务程序后才进入睡眠模式。
  • 进入方式: 内核寄存器的 SLEEPDEEP=0 ,然后调用 WFI 或 WFE 指令即可进入睡眠模式;SLEEPONEXIT=1 时,进入“退出时睡眠”模式。
  • 唤醒方式: 如果是使用 WFI 指令睡眠的,则可使用任意中断唤醒;如果是使用 WFE 指令睡眠的,则由事件唤醒。
  • 睡眠时: 关闭内核时钟,内核停止,而外设正常运行,在软件上表现为不再执行新的代码。这个状态会保留睡眠前的内核寄存器、内存的数据。
  • 唤醒延迟: 无延迟。
  • 唤醒后: 若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。

1.2 停止模式
        在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其 1.8V 区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息,所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。停止模式可以由任意一个外部中断(EXTI)唤醒,在停止模式中可以选择电压调节器为开模式或低功耗模式。

特性和说明:

  • 调压器低功耗模式: 在停止模式下调压器可工作在正常模式或低功耗模式,可进一步降低功耗。
  • 进入方式: 内核寄存器的 SLEEPDEEP=1,PWR_CR 寄存器中的 PDDS=0,然后调用 WFI 或 WFE 指令即可进入停止模式;PWR_CR 寄存器的 LPDS=0 时,调压器工作在正常模式,LPDS=1 时工作在低功耗模式。
  • 唤醒方式: 如果是使用 WFI 指令睡眠的,可使用任意 EXTI 线的中断唤醒;如果是使用 WFE 指令睡眠的,可使用任意配置为事件模式的 EXTI 线事件唤醒。
  • 停止时: 内核停止,片上外设也停止。这个状态会保留停止前的内核寄存器、内存的数据。
  • 唤醒延迟: 基础延迟为 HSI 振荡器的启动时间,若调压器工作在低功耗模式,还需要加上调压器从低功耗切换至正常模式下的时间。
  • 唤醒后: 若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;若由事件唤醒,直接接着执行 WFE 后的程序。唤醒后,STM32 会使用 HSI 作为系统时钟。

1.3 待机模式
        待机模式,它除了关闭所有的时钟,还把 1.8V 区域的电源也完全关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测 boot 条件,从头开始执行程序。它有四种唤醒方式,分别是 WKUP(PA0)引脚的上升沿,RTC 闹钟事件,NRST 引脚的复位和 IWDG(独立看门狗)复位。

特性和说明:

  • 进入方式: 内核寄存器的 SLEEPDEEP=1,PWR_CR 寄存器中的 PDDS=1,PWR_CR 寄存器中的唤醒状态位 WUF=0,然后调用 WFI 或 WFE 指令即可进入待机模式。
  • 唤醒方式: 通过 WKUP 引脚的上升沿,RTC 闹钟、唤醒、入侵、时间戳事件或 NRST 引脚外部复位及 IWDG 复位唤醒。
  • 待机时: 内核停止,片上外设也停止;内核寄存器、内存的数据会丢失;除复位引脚、RTC_AF1 引脚及 WKUP 引脚,其它 I/O 口均工作在高阻态。
  • 唤醒延迟: 芯片复位的时间。
  • 唤醒后: 相当于芯片复位,在程序表现为从头开始执行代码。

WFI与WFE命令

我们了解到进入各种低功耗模式时都需要调用 WFI 或 WFE 命令,它们实质上都是内核指令,在库文件 core_cm3.h 中把这些指令封装成了函数。

/** brief 等待中断
  等待中断 是一个暂停执行指令
  暂停至任意中断产生后被唤醒
*/
#define __WFI        __wfi 

/** brief 等待事件
  等待事件 是一个暂停执行指令
  暂停至任意事件产生后被唤醒
*/
#define __WFE        __wfe

对于这两个指令,我们应用时一般只需要知道,调用它们都能进入低功耗模式,需要使用函数的格式“__WFI();”和“__WFE();”来调用(因为__wfi 及__wfe 是编译器内置的函数,函数内部调用了相应的汇编指令)。

其中 WFI 指令决定了它需要用中断唤醒,而 WFE 则决定了它可用事件来唤醒。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第八十三期】Wed, 6 Mar 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 6 Mar 2024 Totally 74 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MAGID: An Automated Pipeline for Generating Synthetic Multi-modal Datasets Authors Hossein Aboutalebi, …

Vue-04

Vue 指令 指令补充 指令修饰符:通过"."指明一些指令后缀,不同后缀封装了不同的处理操作 → 简化代码 按键修饰符 keyup.enter → 键盘回车监听 在input中使用keyup.enter,这个时候按enter键也能实现添加,和点击按钮实…

Redis的散列插槽及故障转移

散列插槽 散列插槽原理类似于一个哈希散列表,通过哈希算法来映射插槽,并为redis节点分配插槽区间,插槽的所有范围是0~16383 数据key不是与节点绑定,而是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况&a…

第十三届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组 统计子矩阵

#include<iostream> #include<algorithm> #include<cstring> #include<string> #include<vector> #include<queue>using namespace std;int cnt,temp; int n,m,K; int a[505][505]; int pre[505][505];//二维前缀和void sol() {cin>>…

【Linux】gcc升级13.2.0

错误信息 g: error: unrecognized command line option ‘-stdgnu14’ -stdc14需要g5.2以上&#xff0c;而centos默认的g只有4.8.5&#xff0c;所以&#xff0c;要做的事情&#xff0c;是升级g 下载gcc 官网下载: https://ftp.gnu.org/gnu/gcc/wget https://ftp.gnu.org/gnu/…

liunx自动构建化工具make/makefile

liunx自动化构建工具 依赖关系和依赖方法makefile 文件格式 第一个项目 进度条牛刀小试 倒计时简单模版 makefile 的多文件编程 依赖关系和依赖方法 依赖关系&#xff1a;依赖关系是文件之间的关系。 依赖方法&#xff1a;依赖方法是文件之间相互作用的方法。通过方法产生关系…

java网络编程 02 socket

01.socket定义 02.TCP编程 import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket;public class clientSocket {public static void main(String[] args) throws IOException {Socket socket new Socket(Inet…

HTTP协议与HTTPS协议

HTTP与*HTTPS HTTP协议HTTP请求的通信过程HTTP优点 HTTPS协议HTTPS优点SSL/TLS的工作原理?*公钥传递的信赖&#xff1f;*通过中间CA机构传输 HTTP协议 HTTP协议是一个无状态的协议&#xff0c; 服务器不维护任何有关客户端之前所发请求的消息。 是一种懒政&#xff0c;有状态协…

基于selenium自动化索引点击

小鹅快速刷题&#xff0c;根据selenium和xpath定位题干&#xff0c;使用模糊匹配fuzzywuzzy库查找题目匹配答案&#xff0c;自动点击&#xff0c;完成后更新题库 先导入基本包&#xff0c;准备好题库 from fuzzywuzzy import process from selenium import webdriver import …

9、Linux-安装JDK、Tomcat和MySql

目录 一、安装JDK 1、传输JDK文件&#xff08;.tar.gz&#xff09; 2、解压 3、备份环境变量 4、配置环境变量 5、重新加载环境变量 6、验证&#xff08;java -version&#xff09; 二、安装Tomcat 1、传输文件&#xff0c;解压到/usr/local 2、进入Tomcat的bin目录 …

如何从产品的角度做好内容营销?媒介盒子支招

内容运营就是指将生产传播内容并进行重组&#xff0c;去满足用户的内容消费需求&#xff0c;想要提高内容运营的效果&#xff0c;媒介盒子认为可以从产品出发&#xff0c;将内容运营与品牌产品相结合。那么应该怎么做呢&#xff1f;接下来就让媒介盒子告诉你。 一、 场景化内容…

Android岗面试,android内存优化面试题

前言 曾听过很多人说Android学习很简单&#xff0c;做个App就上手了&#xff0c;工作机会多&#xff0c;毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期&#xff0c;工作主要是按照业务需求实现App页面的功能&#xff0c;按照设…

太惊艳了!多微信管理利器,让你事半功倍!

作为现代社交媒体的主要平台之一&#xff0c;微信在商务领域中扮演着重要的角色。为了提高我们的工作效率&#xff0c;微信管理系统应运而生。 这个系统可以同时登录多个微信账号&#xff0c;并进行统一管理。除了便捷的登录管理功能外&#xff0c;微信管理系统还提供了许多实…

达梦数据库使用数据库迁移工具弹窗报错“获取模式失败”的解决办法

在使用数据库迁移工具Data Transfer Service时&#xff0c;在下面这个页面点击下一步之后报错“获取模式失败” 为什么会失败呢&#xff1f;我们去看看报错 这里显示系统处于MOUNT状态&#xff0c;这可能是出错的原因。我们去查看数据库状态。 发现是mount状态。 因为mount状态…

薪资18K需要什么水平?来看看97年测试工程师的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…

爬虫实战——伯克利新闻【内附超详细教程,你上你也行】

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

【Leetcode每日一刷】数组|704. 二分查找、27. 移除元素

力扣每日刷题 一、704. 二分查找1.1、题目1.2、解题思路1.3、代码实现——C1.4、 总结&易错 二、27. 移除元素2.1&#xff1a;题目2.2、解题思路2.3、代码实现——C1.4、 总结&易错 一、704. 二分查找 1.1、题目 704. 二分查找 1.2、解题思路 题型&#xff1a;数组…

java工程师面试简历模板,2024谈一下当下最合适的Java架构

前言 这些算法&#xff0c;都是小编一点一点看的大佬们的方法&#xff0c;自己积累的. 如果有什么描述的不对的地方还望大佬赐教 多交流才能进步&#xff0c;加油&#xff0c;冲冲冲&#xff01;&#xff01;&#xff01; 目录 一、冒泡排序 二、选择排序 三、插入排序 四、快速…

【C++】递归 1241 - 角谷猜想 1108 - 正整数N转换成一个二进制数

文章目录 一、问题&#xff1a;1241 - 角谷猜想二、问题&#xff1a;1108 - 正整数N转换成一个二进制数三、总结四、感谢 一、问题&#xff1a;1241 - 角谷猜想 类型&#xff1a;有规律的循环、递归。 题目描述&#xff1a; 日本一位中学生发现一个奇妙的定理&#xff0c;请角…

Android岗大厂面试官常问的那些问题,2024年Android者未来的出路在哪里

前言 伟人曾经说过&#xff1a; 书是人类进步的阶梯 书中自有黄金屋&#xff0c;书中自有颜如玉 读书破万卷&#xff0c;下笔如有神 书是唯一不死的东西。 书籍是伟大的天才留给人类的遗产。 最近有很多朋友在我的公众号上提问“Android开发的经典入门教材和学习路线&#xff…