STM32低功耗模式,先看官方文档说明:
![image-20240530092840270](../../../../AppData/Roaming/Typora/typora-user-images/image-20240530092840270.png)
低功耗模式有很多,包含睡眠模式,低功耗运行模式,停止模式,待机模式,关机模式,按照产品要求,停止模式和待机模式应用的比较多,其中关机模式功耗是最低的,不能用外部中断唤醒,结合板子的特性,我们先使用待机模式来测试,
待机模式:
```C
待机模式用于实现最低功耗之一,POR/PDR始终处于活动状态 ,在这种模式下,主稳压器被关闭,以降低VCORE域的功耗。低功耗稳压器 关闭或保持活动状态。在后一种情况下,它只提供SRAM以确保数据保留。
唤醒条件:
当发生外部复位事件(NRST引脚)、IWDG复位事件、唤醒事件时,设备退出待机模式
(WKUP引脚,可配置上升沿或下降沿)或RTC事件(报警、周期性唤醒、时间戳、篡改),
或者在LSE上检测到故障时(LSE上的CSS)。
```
由于板子没有的唤醒引脚当作按键,我们只能先运行LED程序,然后进入待机模式,判断功耗变化情况。
```C
int main(void)
{
/* USER CODE BEGIN 1 */
GPIO_InitTypeDef GPIO_InitStructure;
/* USER CODE END 1 */
/* 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_USART2_UART_Init();
/* USER CODE BEGIN 2 */
printf("init_ok\r\n");
__HAL_RCC_PWR_CLK_ENABLE();
/* USER CODE END 2 */
/* Ensure that MSI is wake-up system clock */
__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_MSI);
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
/* Output a message on Hyperterminal using printf function */
printf("hello world\n\r");
// HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(100);
printf("hello world1\n\r");
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);
printf("hello world2\n\r");
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);
printf("hello world3\n\r");
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);
printf("hello world4\n\r");
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
HAL_Delay(1000);
printf("hello world5\n\r");
printf("Enter Standby Mode\r\n");
HAL_PWR_EnterSTANDBYMode();
}
/* USER CODE END 3 */
}
```
运行时候的功耗:
![image-20240530105403437](https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240530105403437.png)
待机时候的功耗:
![image-20240530105440391](https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240530105440391.png)
看下串口数据:
![image-20240530105511291](https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240530105511291.png)
运行5秒之后,程序自动进入待机模式,进入待机模式之后,程序也就无法重新烧录了。
![image-20240530105619668](https://boreyun.oss-cn-shanghai.aliyuncs.com/image-20240530105619668.png)
低功耗演示视频如下:
待机模式功耗