[CortexM0--stm32f0308]Low Power Mode

问题描述

stm32f0308正常是运行在Run mode下,这种mode是在reset之后的默认模式。Low Power Mode,即低功耗模式,用于在IC空闲时可以考虑选择进入,使系统耗能降低,在必要的时候通过唤醒在进入Run mode正常工作。Low Power Mode,在嵌入式系统中考虑的很多,也很关键,因为一般都是用移动电源供电,合理使用Low Power Mode,会很好的提高设备的续航能力。

Low Power Mode方式

  1. Sleep Mode:CPU时钟关闭,所有peripheral时钟运行;
  2. Stop Mode:所有时钟均停止;
  3. Standby Mode:1.8 V domain power-off,这里domain power-off应当是相当于关闭了给IC供电的电源。

    另外,如果在Run Mode下,也可以通过如下手段来降低功耗:

  4. 降低System Clock的速度,即通过Clock的配置,利用分频的作用,将系统Clock从最高的48MHz降低,这部分的配置可以参考Clock相关文档或文章;
  5. 当不使用APB或AHB peripheral时,使用门控时钟的方式。在peripheral配置使用时,一般会先通过RCC_AH/PBClockCmd(xx,Enable)之类的接口来使能peripheral时钟,有时候,可能这个peripheral并没有再使用了,那可以通过RCC_AH/PBClockCmd(xx,Disable)的接口将其关闭,也可以省些电。这里的RCC_AH/PBClockCmd()是stm32的固件库中提供的,需要了解细节的可以看下stm32固件库,其中主要是通过对RCC_APBENR和RCC_AHBENR register操作来使能/禁止某项peripheral的时钟的。

    几种Low Power Mode的比较如下:

Sleep Mode

如何进入Sleep Mode?

执行WFI (Wait For Interrupt) 指令或WFE (Wait for Event)指令。进入Sleep Mode的机制可以通过Cortex-M0 System Control register的SLEEPONEXIT bit来选择:

6. Sleep-now:SLEEPONEXIT bit置零,在WFI/WFE指令执行之后立即进Sleep Mode;

7. Sleep-on-exit:SLEEPONEXIT bit置1,在MCU退出了最低优先级的ISR之后,即系统没有任何ISR在处理时,就会进入Sleep Mode。

如何退出Sleep Mode?

退出Sleep Mode的方式和使用的进入Sleep Mode的指令WFI和WFE有关,使用WFI进入Sleep Mode,任何中断的发生都会导致退出Sleep Mode,而WFE指令进入的Sleep Mode,在event发生时会退出Sleep Mode,对于WFE指令进入Sleep Mode的方式,需要使用如下两种方式配置其退出Sleep Mode:

8. 使能一个peripheral中断(非NVIC中断),使能Cortex-M0 System Control register的SEVONPEND bit,当MCU从WFE Sleep Mode醒来时,需要清掉peripheral interrupt pending bit和peripheral NVIC IRQ channel pending bit ;

9. 配置一个外部或内部EXTI line为event模式。

Sleep Mode进入退出场景比较

Stop Mode

比Sleep Mode更进一步,IC内部Clock应当都停止了,SRAM和register,IO口状态是保持在上一刻进入Stop Mode时的状态。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 12:53:35

[CortexM0--stm32f0308]Low Power Mode的相关文章

tensorfolw配置过程中遇到的一些问题及其解决过程的记录(配置SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving)

今天看到一篇关于检测的论文<SqueezeDet: Unified, Small, Low Power Fully Convolutional Neural Networks for Real-Time Object Detection for Autonomous Driving>,论文中的效果还不错,后来查了一下,有一个Tensorflow版本的实现,因此在自己的机器上配置了Tensorflow的环境,然后将其给出的demo跑通了,其中遇到了一些小问题,通过查找网络上的资料解决掉了,在这里

PatentTips - Fast awake from low power mode

BACKGROUND Electronic devices, such as electronic book readers ("eBook reader devices"), cellular telephones, portable media players, desktop computers, laptops, tablet computers, netbooks, personal digital assistants, and the like, rely on elec

bzoj 3969 LOW Power

3969: [WF2013]Low Power Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=3969 Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能量之差越小,这个机器就工作的越好. 现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上, 使得所有机

bzoj 3969: [WF2013]Low Power 二分

3969: [WF2013]Low Power Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=3969 Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能量之差越小,这个机器就工作的越好. 现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上, 使得所有机

Network management system scheduling for low power and lossy networks

In one embodiment, a network management system (NMS) determines an intent to initialize a request-response exchange with a plurality of clients in a low power and lossy network (LLN). In response, the NMS adaptively schedules corresponding responses

Low Power之CPF/UPF

1 CPF The Common Power Format is a standard promoted by the Low Power Coalition at Si2. CPF is also a TCL-based language that operates on speci?cation objects and the design objects. A design object is a module, instance, net, pin or port as they app

bzoj3969 [WF2013]Low Power

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3969 [题解] 二分答案x,贪心选取,如果选取了i个,有j对,那么要满足i<=2*j*k(不然有数就没位置放了) # include <stdio.h> # include <string.h> # include <iostream> # include <algorithm> // # include <bits/stdc++.h>

【二分贪心】Bzoj3969 [WF2013] Low Power

Description 有n个机器,每个机器有2个芯片,每个芯片可以放k个电池. 每个芯片能量是k个电池的能量的最小值. 两个芯片的能量之差越小,这个机器就工作的越好. 现在有2nk个电池,已知它们的能量,我们要把它们放在n个机器上的芯片上, 使得所有机器的能量之差的最大值最小. Input 第一行,两个正整数,n和k. 第二行,2nk个整数,表示每个电池的能量. Output 一行一个整数,表示所有机器的能量之差的最大值最小是多少. Sample Input 2 3 1 2 3 4 5 6 7

BZOJ 3969 Low Power 解题报告

我们首先将所有电池排序,那么我们可以找到一组最优方案,使得一台机器的能量之差是相邻两电池的能量之差. 然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的. 假设这个数对是 i - 1, i,并且是第 j 个数对,那么我们称满足条件为: 2nk - i + 2 >= 2k(n - j + 1) 意思就是能拿出足够多的电池来组成机器人. 然后注意特判:如果不能选出足够多的数对就返回 false,我在这里 WA 到死... 毕竟 Gromah 太弱,只会做水题. 1