PWR待机模式代码示例

待机模式用于通过掉电复位实现最低功耗。内部稳压器关闭,因此 VCORE 域断电。PLL、MSI RC、HSI16 RC 和 HSE 晶体振荡器也被关闭。

RTC 可以保持活动状态(带 RTC 的待机模式,不带 RTC 的待机模式)。

欠压复位 (BOR) 在待机模式下始终保持有效。

待机模式下每个 I/O 的状态可以通过软件选择:带内部上拉、内部下拉或悬空的 I/O。

可以使用 SYS_WKUP 引脚、 RTC事件(闹钟或定时器)、IWDG或 NRST 引脚中的外部复位将系统从待机模式唤醒。

从待机模式唤醒后,程序以与复位后相同的方式重新开始执行(引导引脚采样、选项字节加载、获取复位向量等)。

6.2 HAL库工作流程总结

当退出待机或关机模式时,VCORE 域中的所有寄存器都设置为其复位值。

6.3配置待机模式↑

从 EXTI 入门[1]打开项目

打开 main.c

如果您打算使用 SYS_WKUP 引脚唤醒系统,请添加以下代码行以清除唤醒标志。否则,待机模式只会进入一次。

/* 初始化所有已配置的外设 */

/* USER CODE BEGIN 2 */

__HAL_PWR_CLEAR_FLAG ( PWR_FLAG_WU );

/* 用户代码结束 2 */

添加进入待机模式的功能

/* 无限循环 */

/* USER CODE BEGIN WHILE */

while ( 1 )

{ /* USER CODE END WHILE */

/* 用户代码开始 3 */

HAL_Delay ( 2000 );

HAL_PWR_EnterSTANDBYMode ();

}

/* 用户代码结束 3 */

6.4编译烧录↑

单击构建按钮

点击运行按钮执行

6.5测量电流消耗↑

参考数据表[4],在 25°C 和 VDD = 3V 的待机模式下,电流消耗应为 150nA

使用 STM32Cube Monitor-Power [5],我们测量了:

发表评论