(1)3时钟模式

①睡眠模式②停止模式③待机模式

1.睡眠模式:Cortex-M3内核(理解为CPU)停止工作,CPU供电1.8V有着,周边任何执行。执行

2.停机模式:全部时钟都停止,CPU电源1.8V没断。唤醒后从原来位置运行

3.待机模式:时钟全断,CPU电源1.8V也断,唤醒后程序又一次运行

可形象參考:

CPU:皇上

CPU电源1.8V:皇后

外设:将军

那么:

1.睡眠模式:仅仅有皇上睡觉

2.停机模式:皇上,将军睡觉

3.待机模式:皇上,皇后。将军全睡觉了

(原则:皇后不睡觉,程序可被保留,唤醒后从原来位置运行)

(二)程序简单介绍(库函数)

1.睡眠模式

	while(1)
{
/* wait interrupt */
LED1( ON );
Delay(0xFFFFF);
LED1( OFF ); LED2( ON );
Delay(0xFFFFF);
LED2( OFF ); LED3( ON );
Delay(0xFFFFF);
LED3( OFF ); __WFI();
}

__WFI(); 进入睡眠模式,随意中断唤醒。唤醒后不用再配置时钟

2.停止模式

①/*由于要使用其外设时钟等。故需用到pwr*/

#include "stm32f10x_pwr.h"

②/*使能电源管理单元的时钟*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

③进入停止模式

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);

④唤醒:外部中断

由于将军睡了,(及外设时钟关了,因此须要又一次配置)唤醒后须要又一次启动HSE

SYSCLKConfig_STOP();

void SYSCLKConfig_STOP(void)
{
ErrorStatus HSEStartUpStatus;
/* 使能 HSE */
RCC_HSEConfig(RCC_HSE_ON); /* 等待HSE准备就绪*/
HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS)
{ /* 使能 PLL */
RCC_PLLCmd(ENABLE); /* 等待 PLL 准备就绪 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
} /* 选择PLL作为系统时钟源*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /*等待PLL被选择为系统时钟源 */
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
}

3.待机模式

①/*由于要使用其外设时钟等,故需用到pwr*/

#include "stm32f10x_pwr.h"

②/*使能电源管理单元的时钟*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

③进入待机模式

/*使能WKUP引脚的唤醒功能,WKUP是第二功能。不用配置它的输出模式(不是太懂)*/
PWR_WakeUpPinCmd (ENABLE);
/*进入待机模式*/
PWR_EnterSTANDBYMode();

④唤醒,复位唤醒。PA0上升沿唤醒

⑤检測是复位唤醒还是PA0上升沿唤醒

if(PWR_GetFlagStatus(PWR_FLAG_WU) == SET)
{
  printf("\r\n PA0上升沿唤醒\r\n"); }
else
  printf("\r\n 其它\r\n");

由于待机唤醒程序从头运行,故不用多加配置时钟的函数了

                                                      狂人用脑子

版权声明:本文博主原创文章。博客,未经同意不得转载。

STM32电源管理的更多相关文章

  1. linux驱动编写(电源管理驱动)

    对于嵌入式设备来说,合适的电源管理,不仅可以延长电池的寿命,而且可以省电,延长设备运行时间,在提高用户体验方面有很大的好处.所以,各个soc厂家在这方面花了很多的功夫.下面,我们可以看看linux是如 ...

  2. 第42章 电源管理—实现低功耗—零死角玩转STM32-F429系列

    第42章     电源管理—实现低功耗 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  3. [专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文

    综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对 ...

  4. Linux电源管理(11)_Runtime PM之功能描述

    转自:http://www.wowotech.net/pm_subsystem/rpm_overview.html 1. 前言 终于可以写Runtime PM(后面简称RPM)了,说实话,蜗蜗有点小激 ...

  5. USB电源管理

    在USB总线接口协议中,由于涉及电源供电,因此协议中规定了完整的电源管理方案.通过USB电源管理可以实现USB设备的激活.挂起.空闲和睡眠等,从而降低无效的功率消耗,实现系统电源的有效使用和合理分配. ...

  6. Android电源管理-休眠简要分析

    一.开篇 1.Linux 描述的电源状态 - On(on)                                                 S0 -  Working - Standb ...

  7. exynos 4412 电源管理芯片PMIC 的配置及使用方法

    /** ****************************************************************************** * @author    Maox ...

  8. linux电源管理系列(一)

    本系列将逐步介绍linux电源管理相关的知识,涉及到常见电源管理机制.linux电源管理机制.linux驱动中有关电源管理的相关接口.内核文档中关于Linux电源管理架构文档的分析.以下将以此来介绍相 ...

  9. linux驱动程序之电源管理之Run-time PM 详解(4)

    Run-time PM. 每个device或者bus都会向run-time PM core注册3个callback   struct dev_pm_ops { ... int (*runtime_su ...

随机推荐

  1. 【Nginx】epoll事件驱动模块

    Linux 2.4之前的内核版本号,Nginx事件驱动的方法是使用poll.select功能.过程必须等待一个事件发生在连接上(接收数据)时间,部连接都告诉内核,由内核找出哪些连接上有事件发生.因为须 ...

  2. 查看文章strncpy()功能更好的文章

    strncpy()功能 原型:extern char *strncpy(char *dest, char *src, int n);    使用方法:#include <string.h> ...

  3. android弹出时间选择框

    时间选择框: new DatePickerDialog(this, new OnDateSetListener() { @Override public void onDateSet(DatePick ...

  4. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  5. 使用JSP实现商场购物车模块

    这些日子,学习JSP,只要找到一个小模块来试试你的手: 这里是实现车模块结果页面截图: 图1. 产品显示页面 通过此页面进行产品选择.增加到购物车 图2 .购物车页面 图3 . 商品数量设置 好了,先 ...

  6. 重新想象 Windows 8 Store Apps (28) - 选取器: CachedFileUpdater(缓存文件更新程序)

    原文:重新想象 Windows 8 Store Apps (28) - 选取器: CachedFileUpdater(缓存文件更新程序) [源码下载] 重新想象 Windows 8 Store App ...

  7. ASCII与Unicode编码消息写文件浅析

    [文章摘要] ASCII与Unicode是两种常见的字符编码. 它们的表示方法不一样,因而在程序中就要差别处理. 本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进 ...

  8. GUIForDebug

    package gui; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.ast.Chun ...

  9. [LeetCode101]Symmetric Tree

    题目: Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). F ...

  10. json学习初体验--第三者jar包实现bean、List、map创json格式

    1.的需要jar包裹json-lib.jar 下载链接: http://sourceforge.net/projects/json-lib/files/json-lib/ 此包还须要下面的依赖包, c ...