(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. Coreseek:部门查询和增量索引代替实时索引

    1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作).同时, ...

  2. 很久没来这里,今天的评测java怪东西,左右Date类和时间戳转换

    在发展过程中,经常会遇到利用上课时间.说话的Date类就不得不提时间戳,左右fr=aladdin" target="_blank">的定义大家能够看看网上对时间戳的 ...

  3. js日期天数差

    var s1 = "2007-01-01"; var s2 = "2007-12-31"; s1 = s1.replace(/-/g, "/" ...

  4. Android 动画具体解释View动画

    为了让用户更舒适的在某些情况下,利用动画是那么非常有必要的.Android在3.0一旦支持两种动画Tween动漫Frame动画.Tween动画支持简单的平移,缩放,旋转,渐变.Frame动画就像Gif ...

  5. 使用python写appium用例

    安装Python依赖 pip3.4 install nose pip3.4 install selenium pip3.4 install Appium-Python-Client 执行測试用例and ...

  6. A. Initial Bet(Codeforces Round #273)

    A. Initial Bet time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  7. 邮箱password复位图

    blog宗旨:用图说话 辅助文字说明: 长处:用户系统完毕接口部分.界面留给业务自行设计. 缺点:邮箱发送邮件定制模板,没有完毕松耦合. 改进点:邮箱的准备发送邮件模板. 版权声明:本文博客原创文章, ...

  8. fullcalendar日历控件集合知识

    1.基本的语法: 首先,fullcalendar和JQUERY一样,以面向对象的方式来组织代码.当然,这里的面向对象不过指能够把整个fullcalendar理解为一个类,这个类里包含有非常多的属性.方 ...

  9. [Unity3D]脚本中Start()和Awake()的差别

    Unity3D刚開始学习的人常常把Awake和Start混淆. 简单说明一下,Awake在MonoBehavior创建后就立马调用,Start将在MonoBehavior创建后在该帧Update之前. ...

  10. 解决PhpCms V9后台无法上传图片

    PHPCMS V9 在近期一次更新的版本号(9.4.2)中因为代码推断失误.导致PHPCMS在后台更新文章无法上传图片而导致的bug.在PHPCMS论坛中找到了暂时解决方式,希望PHPCMS官方能尽快 ...