自学内容网 自学内容网

STM32CubeIDE(低功耗模式)

一、SLEEP睡眠模式

1、概念

        在SLEEP模式下,CPU停止执行指令,但内部和外部的SRAM、寄存器和大部分外设(除了被显式禁用的)仍然保持活跃。系统时钟继续运行,因此定时器和中断可以触发唤醒事件。这种模式适用于需要快速响应中断的情况,因为它提供了较快的唤醒时间。然而,由于许多组件仍然运行,功耗比其他两种模式高。

2、代码编写

主调节器,外设中断唤醒

  //主调节器(Main Regulator)和低功耗调节器(Low Power Regulator)
  while (1)
  {
  HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin);
  printf("while \r\n");

    HAL_SuspendTick();
  HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
    //HAL_PWR_EnterSLEEPMode(PWR_LOWPOWERREGULATOR_ON, PWR_SLEEPENTRY_WFE);
  HAL_ResumeTick();

    HAL_Delay(500);
  }

串口中断唤醒

//串口唤醒
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart==&huart1)
{
if (reciveDate[0] == 'R' && reciveDate[1] == 'U' && reciveDate[2] == 'E')
{
printf("rouse !!! \r\n");
}
HAL_UART_Receive_DMA(&huart1, reciveDate, 3);//再次启动中断接收
}
}

二、STOP停止模式

        STOP模式提供了更低的功耗,此时CPU完全停止,所有的时钟都被关闭,包括系统时钟。SRAM和寄存器的内容被保留,但外设可能被停用,除非它们被配置为在STOP模式下仍然运行(例如RTC)。唤醒源通常是硬件中断(如RTC闹钟、外部中断、USB唤醒等)。由于时钟需要重新配置,唤醒时间较长,但功耗远低于SLEEP模式。

三、STANDBY待机模式

        STANDBY模式是功耗最低的模式,它会将整个微控制器置于非常低的功耗状态。在这种模式下,CPU和所有的时钟以及大多数外设都被关闭,包括系统时钟和内核时钟。只有少数外设(如RTC和USB唤醒)以及电源管理模块保持运行。唤醒通常通过外部唤醒信号(如引脚上的上升或下降沿、RTC闹钟或USB唤醒)完成。由于需要重启微控制器并重新配置时钟系统,STANDBY模式的唤醒时间最长,但也是最节能的模式。

1、使用System Wake-UP 结束待机模式

代码

  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1); //使能引脚
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //清除标志位
    HAL_PWR_EnterSTANDBYMode();//进入待机模式
  if(__HAL_PWR_GET_FLAG(PWR_FLAG_SB))
  {
  printf("Reset from standby mode \r\n");
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB);
  }
  else
  {
  printf("MCU RESET !!! \r\n");
  }

  while (1)
  {
  printf("while \r\n");

  HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);
  __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    HAL_PWR_EnterSTANDBYMode();
  }


原文地址:https://blog.csdn.net/qq_57594025/article/details/140539572

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!