打印
[其他ST产品]

stm32F103R6之低功耗模式

[复制链接]
210|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c17|  楼主 | 2022-6-30 18:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
概述
在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。

STM32F103有三种低功耗模式:

睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)
停止模式(所有的时钟都已停止)
待机模式(1.8V电源关闭)
此外,在运行模式下,根据功耗与频率成正比关系,可以通过以下方式来降低功耗:

降低系统时钟
关闭APB和AHB总线上未被使用的外设时钟。


图 1低功耗模式一览

使用特权

评论回复
沙发
c17|  楼主 | 2022-6-30 18:42 | 只看该作者
睡眠模式
通过执行WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:

SLEEP-NOW:如果SLEEPONEXIT被清除,当WFI或WFE被执行时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时(处理完所有中断后),微控制器就立即进入睡眠模式。
在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。

使用特权

评论回复
板凳
c17|  楼主 | 2022-6-30 18:42 | 只看该作者
如何退出睡眠模式?

1、如果是执行WFI指令进入的睡眠模式,任意一个外设中断都能将系统从睡眠模式唤醒。

2、如果是执行WFE指令进入的睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。

使用特权

评论回复
地板
c17|  楼主 | 2022-6-30 18:43 | 只看该作者
停止模式
停止模式是在Cortex™-M3的睡眠模式基础上结合了外设的时钟控制机制。

在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。

在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。

以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入停止模式:

设置Cortex-M3系统控制寄存器中的SLEEPDEEP位
清除电源控制寄存器(PWR_CR)中的PDDS位
通过设置PWR_CR中LPDS位选择电压调节器的模式

使用特权

评论回复
5
c17|  楼主 | 2022-6-30 18:44 | 只看该作者
注:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。如果在进入停止模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。

使用特权

评论回复
6
c17|  楼主 | 2022-6-30 18:44 | 只看该作者
如何退出停止模式?

当一个中断(执行WFI命令进入的停止模式)或唤醒事件(执行WFE命令进入的停止模式)导致退出停止模式时,HSI RC振荡器被选为系统时钟。

当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。

使用特权

评论回复
7
c17|  楼主 | 2022-6-30 18:45 | 只看该作者
待机模式
待机模式可实现系统的最低功耗。该模式是在Cortex-M3睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份域的寄存器和待机电路维持供电。

在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:

复位引脚(始终有效)
当被设置为防侵入或校准输出时的TAMPER引脚
被使能的唤醒引脚

使用特权

评论回复
8
c17|  楼主 | 2022-6-30 18:46 | 只看该作者
以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入待机模式:

设置Cortex™-M3系统控制寄存器中的SLEEPDEEP位
设置电源控制寄存器(PWR_CR)中的PDDS位
清除电源控制/状态寄存器(PWR_CSR)中的WUF位

使用特权

评论回复
9
c17|  楼主 | 2022-6-30 18:47 | 只看该作者
如何退出待机模式?

当一个外部复位(NRST引脚)、IWDG(独立看门狗)复位、WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时,微控制器从待机模式退出。

从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。 从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。

使用特权

评论回复
10
Pulitzer| | 2022-10-5 09:21 | 只看该作者

现实中make_youtiao()这个函数需要处理的数据非常庞大

使用特权

评论回复
11
Uriah| | 2022-10-5 16:22 | 只看该作者

通常用发光二极管LED代替小灯

使用特权

评论回复
12
Bblythe| | 2022-10-5 19:21 | 只看该作者

断优先级有冲突导致UART-RX的正常接收

使用特权

评论回复
13
童雨竹| | 2023-4-1 08:18 | 只看该作者

电压范围称为工作电源电压

使用特权

评论回复
14
Pulitzer| | 2023-4-1 09:21 | 只看该作者

时钟越快功耗越大、抗电磁干扰能力越弱

使用特权

评论回复
15
公羊子丹| | 2023-4-1 10:24 | 只看该作者

If-Else 已成为事实上的代码分支解决方案

使用特权

评论回复
16
公羊子丹| | 2023-4-1 11:17 | 只看该作者

在掌握对象的变化频度时是有效的

使用特权

评论回复
17
Wordsworth| | 2023-4-1 12:20 | 只看该作者

B声明的函数名的命名规则很不符合A的口味

使用特权

评论回复
18
Clyde011| | 2023-4-1 13:23 | 只看该作者

将小灯接在单片机的P1.0端口上

使用特权

评论回复
19
万图| | 2023-4-1 15:19 | 只看该作者

144MHz超标点与晶体有关

使用特权

评论回复
20
Uriah| | 2023-4-1 16:22 | 只看该作者

让其作为芯片休眠唤醒脚

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

c17

31

主题

272

帖子

1

粉丝