STM32L071 Low-power模式导致仿真异常

首先,在该模式下遇到的问题

FreeRTOS系统,开机时,系统时钟设置为MSI RC 2.097MHz,设置电压调节器系数为等级3
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
仿真运行会导致在没有打断点的地方停止,并且监控窗口中某些RAM变量值显示有问题,但实际使用时并没有被实际改变。经观察,仿真中断周期大概为60秒。
不添加此行代码或者改为默认值为2时,该问题解决。


以下分析Low-power模式,具体功能和作用

超低功耗 STM32L071xx 支持动态电压缩放以优化其在运行模式下的功耗。 可以根据系统的最大工作频率和外部电源电压来调整为逻辑供电的内部低压降稳压器的电压。
{ 这里面有个重要概念:动态电压缩放:动态电压缩放(dynamic voltage scaling,DVS)是一种有效的低能耗技术,它能够在程序运行时动态地改变处理器的电压和频率,在不影响处理器峰值性能的情况下有效的减少处理器的能耗。——摘自《百度百科》}

共有三个功耗范围:
• 范围 1(VDD 范围限制为 1.71-3.6 V),CPU 运行速度高达 32 MHz
• 范围 2(全 VDD 范围),最大 CPU 频率为 16 MHz
• 范围 3(全 VDD 范围),最大 CPU 频率限制为 4.2 MHz

( 由此动态电压缩放功能可以理解为,设定缩放系数后,在程序运行过程中,软件动态调节系统频率以达到降低功耗的目的 )

提供了七种低功耗模式,以实现低功耗、短启动时间和可用唤醒源之间的最佳折衷:

睡眠模式
在睡眠模式下,只有 CPU 停止。当中断/事件发生时,所有外设继续运行并且可以唤醒CPU。在所有外设关闭的情况下,16 MHz 的睡眠模式功耗约为 1 mA。

低功耗运行模式
这种模式是通过将多速内部 (MSI) RC 振荡器设置为低速时钟(最大 131 kHz)、从 SRAM 或闪存执行以及在低功耗模式下的内部稳压器来实现的,以最大限度地降低稳压器的工作电流。在低功耗运行模式下,时钟频率和启用的外设数量都受到限制。

低功耗睡眠模式
这种模式是通过进入休眠模式实现的,内部稳压器处于低功耗模式,以最小化稳压器的工作电流。在低功耗睡眠模式下,时钟频率和启用的外设数量都受到限制;一个典型的例子是有一个以 32 kHz 运行的定时器。
当事件或中断触发唤醒时,系统将恢复到运行模式,调节器打开。

带 RTC 的停止模式
停止模式可实现最低功耗,同时保留 RAM 和寄存器内容以及实时时钟。 VCORE 域中的所有时钟都停止,PLL、MSI RC、HSE 晶体和 HSI RC 振荡器被禁用。 LSE 或 LSI 仍在运行。电压调节器处于低功耗模式。
一些具有唤醒功能的外设可以在停止模式期间启用 HSI RC 以检测它们的唤醒条件。
设备可以通过任何 EXTI 线从停止模式唤醒,在 3.5 μs 内,处理器可以处理中断或恢复代码。 EXTI 线源可以是任何 GPIO。它可以是 PVD ​​输出、比较器 1 事件或比较器 2 事件(如果内部参考电压打开),它可以是 RTC 警报/篡改/时间戳/唤醒事件、USART/I2C/LPUART/LPTIMER 唤醒事件。

没有 RTC 的停止模式
停止模式可在保留 RAM 和寄存器内容的同时实现最低功耗。所有时钟停止,PLL、MSI RC、HSI 和 LSI RC、HSE 和 LSE 晶振被禁用。
一些具有唤醒功能的外设可以在停止模式期间启用 HSI RC 以检测它们的唤醒条件。
电压调节器处于低功耗模式。设备可以通过任何 EXTI 线从停止模式唤醒,在 3.5 μs 内,处理器可以处理中断或恢复代码。 EXTI 线源可以是任何 GPIO。它可以是 PVD ​​输出、比较器 1 事件或比较器 2 事件(如果内部参考电压打开)。它可以
也可以被 USART/I2C/LPUART/LPTIMER 唤醒事件唤醒。

带 RTC 的待机模式
待机模式用于实现最低功耗和实时时钟。内部稳压器被关闭,从而整个 VCORE 域被关闭。 PLL、MSI RC、HSE 晶体和 HSI RC 振荡器也关闭。 LSE 或 LSI 仍在运行。进入待机模式后,除了待机电路中的寄存器(唤醒逻辑、IWDG、RTC、LSI、LSE 晶体 32 KHz 振荡器、RCC_CSR 寄存器)外,RAM 和寄存器内容都将丢失。
当外部复位(NRST 引脚)、IWDG 复位、三个 WKUP 引脚之一的上升沿、RTC 警报(警报 A 或警报 B)、RTC 篡改事件、RTC 时间戳事件或RTC 唤醒事件发生。

不带 RTC 的待机模式
待机模式用于实现最低功耗。内部稳压器被关闭,从而整个 VCORE 域被关闭。 PLL、MSI RC、HSI 和 LSI RC、HSE 和 LSE 晶体振荡器也关闭。
进入待机模式后,除了待机电路中的寄存器(唤醒逻辑、IWDG、RTC、LSI、LSE 晶体 32 KHz 振荡器、RCC_CSR 寄存器)外,RAM 和寄存器内容都将丢失。
当外部复位(NRST 引脚)或三个 WKUP 引脚之一出现上升沿时,器件会在 60 μs 内退出待机模式。


版权声明:本文为chuxiaobobo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。